2012-08-03 81 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