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 :(得分:2)
来自fine manual:
puts(obj,...)→nil
相当于
$stdout.puts(obj, ...)
对于IO.puts
:
puts(obj,...)→nil
[...]如果使用数组参数调用,则将每个元素写入新行。
所以puts [1,2]
以换行符分隔1
和2
。
执行此操作时:
1.9.3-p286 :042 > x.right.first.chem_species[0]
=> ["H", 2]
您允许irb
显示数组,irb
将使用inspect
生成输出,['H', 2].inspect
为["H", 2]
。
答案 1 :(得分: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