我有一个自定义对象,非常简单的jsut试图弄清楚红宝石的工作原理。
class SomeObject
def initialize(name)
@myName = name
end
def sayHello
puts 'Hello ' + @myName
end
end
然后我使用chef运行搜索,并创建其中几个对象并将它们添加到集合中:collection = []
然后collection << myObject
其中myObject为myObject = SomeObject.new('someName')
我是他们试图迭代这个集合,获取对象并调用sayHello。
collection.each do |i|
p "Something...."
p i.name #fails
#i.sayHello # fails
end
谁能告诉我哪里出错或者我怎么做到这一点?感谢。
编辑:如果我在屏幕上打印“我”
所以我确定它正在创建并且在集合中,我不能解决问题:D
答案 0 :(得分:3)
您的实例变量名为@myName
而不是@name
,此外您还需要允许使用attr_reader
指令公开读取您的实例变量:
class SomeObject
attr_reader :myName
def initialize(name)
@myName = name
end
def sayHello
puts 'Hello ' + @myName
end
end
collection = [ SomeObject.new('Hunter') ]
collection.each do |i|
puts i.myName # output= Hunter
i.sayHello() # output= Hello Hunter
end