红宝石中的对象数组

时间:2012-08-03 06:14:22

标签: ruby-on-rails ruby arrays object parameters

我正在尝试学习ruby,并且怀疑将对象数组作为函数参数传递并将其打印在函数中。

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

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

我想打印名称" John"," Miley"和#34; Maria"在函数中我写的函数func1如下:

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

可能是func1是在类Name的实例上定义而不是类本身?

尝试:

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