【发布时间】:2013-07-31 20:50:19
【问题描述】:
我尝试学习 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/ 书籍:工程软件即服务
【问题讨论】:
-
顺便说一句:如果您的所有
each方法所做的只是将块传递给另一个方法,那么让块匿名(这应该减少混乱)实际上是有害的,因为如果你给它是一个名字,你可以传递它:def each(&blk) @members.each(&blk) end.
标签: ruby methods enumerable