2012-08-03 67 views
0

我想了解红宝石,并有关将对象数组作为函数参数并将其打印在函数中有疑问。红宝石中的对象数组

我有一个包含对象的数组如下

describe Name 
par1 = "John" 
par2 = "Miley" 
par3 = "Maria" 
@obj_arr = [Name.new(par1),Name.new(par2),Name.new(par3)] 
Name.func1(@obj_arr) 

我想打印的名称为“约翰”阵列“麦莉”和“玛丽亚”在功能和我写的功能FUNC1是如下:

def self.func1(parameter) 
parameter.each do |p| 
puts p 
end 
end 

这没有打印名称。我在访问函数中的obj_arr时出错了吗?

回答

0

我认为你的问题可能是对象的to_s方法。你应该覆盖它来打印你想要的。顺便说一句,你的问题的语法是有点关闭。我认为这个函数的定义应该是def self.func1并且你错过了一个结束。 这是我测试的代码:

irb(main):001:0> class Name 
irb(main):002:1> def self.func1(parameter) 
irb(main):003:2> parameter.each do |p| 
irb(main):004:3* puts p 
irb(main):005:3> end 
irb(main):006:2> end 
irb(main):007:1> end 
=> nil 
irb(main):008:0> class Name 
irb(main):009:1> def initialize(name) 
irb(main):010:2> @name = name 
irb(main):011:2> end 
irb(main):012:1> end 
=> nil 
irb(main):013:0> Name.func1([Name.new('a'), Name.new('b')]) 
#<Name:0x2163dc8> 
#<Name:0x2163d98> 
=> [#<Name:0x2163dc8 @name="a">, #<Name:0x2163d98 @name="b">] 
irb(main):014:0> class Name 
irb(main):015:1> def to_s 
irb(main):016:2> @name 
irb(main):017:2> end 
irb(main):018:1> end 
=> nil 
irb(main):019:0> Name.func1([Name.new('a'), Name.new('b')]) 
a 
b 
=> [a, b] 
irb(main):020:0> 
+0

他失踪2实际上结束 – 2012-08-03 06:18:59

+0

是的,我补充说,在代码! – user1568617 2012-08-03 06:21:38

+0

仍然缺少一个... – davidrac 2012-08-03 06:22:35

0

它可能是FUNC1是在类名的实例定义的,而不是类本身?

尝试:

class Name 
    def self.func1(parameter) 
     parameter.each do |p| 
     puts p 
     end 
    end 
    end