2013-02-17 227 views
1
1.9.3-p286 :039 > (0...x.right.first.chem_species.size).each do |atom| 
1.9.3-p286 :040 >  puts x.right.first.chem_species[atom] 
1.9.3-p286 :041?> end 
H 
2 
O 
1 
=> 0...2 
1.9.3-p286 :042 > x.right.first.chem_species[0] 
=> ["H", 2] 
1.9.3-p286 :043 > 

不同的價值,爲什麼不賣出期權輸出 ["H",2]然後["O",1]。 (作爲第二種方法返回)。這似乎並不正確通過數組的數組迭代返回比預期

+0

什麼是'chem_species'類 - 它是一個哈希? – PinnyM 2013-02-17 04:35:39

+0

x.right.first.chem_species.class - > Array – 2013-02-17 04:43:37

回答

2

fine manual

看跌期權(OBJ,...)→零

相當於

$stdout.puts(obj, ...) 

而對於IO.puts

放(OBJ,...)→零

[...]如果與數組參數調用時,在新的一行寫入每個元素。

所以puts [1,2]打印12通過換行分隔。

當你這樣做:

1.9.3-p286 :042 > x.right.first.chem_species[0] 
=> ["H", 2] 

你讓irb顯示陣列和irb將使用inspect生產輸出和['H', 2].inspect["H", 2]

0

它看起來像:

 
(0...x.right.first.chem_species.size).each do |atom| 
    puts x.right.first.chem_species[atom] 
end 

可以更清楚地寫爲:

 
x.right.first.chem_species.each do |atom| 
    puts atom 
end 
+0

簡而言之:'x.right.first.chem_species.each&method(:puts)':-) – mudasobwa 2013-02-17 08:52:43