2017-03-09 53 views
-1

我似乎不明白爲什麼我不能訪問實例變量,如果他們沒有初始化。當我將實例變量添加到attr_accessor時,出現以下錯誤。無法訪問實例變量語法錯誤,意外的':',期待keyword_end

syntax error, unexpected ':', expecting keyword_end (SyntaxError) 
attr_reader :name :list 

我能夠訪問名稱和年齡的屬性方法,但沒有其他的。這是我的代碼。

class Dancer 
    attr_reader :name 
    attr_accessor :age :list 

    def initialize(name, age) 
    @name = name 
    @age = age 
    @list = [] 
    end 

    def pirouette 
    "*twirls*" 
    end 

    def bow 
    "*bows*" 
    end 

    def queue_dance_with(partner) 
    @partner = partner 
    end 

    def card 
    @list << @partner 
    end 

    def begin_next_dance 
    puts "Now dancing with #{@list[0]}" 
    @list.shift 
    end 
end 

爲什麼我不能訪問@partner@list?如果我將它們添加到attr_accessorattr_reader :list :partner它給我一個錯誤。

+0

這是一個純Ruby的問題,因此不應該有一個Rails標籤。 –

回答

3

逗號事項:

#     ⇓ 
attr_accessor :age, :list 
+0

我有一個問題,這個類已經包含數組方法嗎?或者我必須添加數組模塊才能訪問數組方法?如果是的話,我會如何去做這件事? –

+0

我在卡片方法'''未定義的方法'<<'中獲得了以下錯誤:NilClass''' –

+0

該類帶有6個方法,我猜可能沒有一個可以被定義爲「數組方法」。在ruby中沒有'Array'模塊。我不知道這些代碼的其他部分,我只是[正確]回答了所述的問題。 – mudasobwa

1

你錯過了,

attr_accessor :age, :list 
+0

我在卡片方法'''未定義方法'<<'中獲得了以下錯誤:nil:NilClass''' –

相關問題