我试图跟随Ruby的教程,但我感到非常困惑。我找到的任何地方似乎都说定义一个实例变量是这样的;
class Example
def fun
# CODE
end
end
e = Example.new
e.fun # <- Will run your code
我真的不明白为什么这不起作用
class Example
include Enumerable
def initialise
@members = ["a", "b"]
end
def each
@members.each do |member|
yield member
end
end
end
当我打电话
e = Example.new
e.each do |elmt|
puts elmt
end
我收到错误
NoMethodError: undefined method `each' for nil:NilClass
任何人都可以帮我弄清楚如何让这个工作。我不知道出了什么问题,下面是让我相信这应该有用的众多资源中的3个。我显然做错了什么,但我不能看到它
来源; http://ruby.about.com/od/advancedruby/ss/Using-The-Enumerable-Module.htm http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/ 书:工程软件即服务
答案 0 :(得分:4)
你有一个错字。它是initialize
,而不是initialise
。您的@members
实例var从未分配过,这就是nil
的原因。