2017-03-09 102 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''' –

相关问题