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 > 

为什么 puts 不输出 ["H",2]then ["O",1]。(作为第二种方法返回)。这似乎不对

4

2 回答 2

2

来自精美手册

puts(obj, ...) → 无

相当于

$stdout.puts(obj, ...)

对于IO.puts

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].

于 2013-02-17T04:53:45.033 回答
0

看起来像:

(0...x.right.first.chem_species.size).each 做 |atom|
  放 x.right.first.chem_species[atom]
结尾

可以更清楚地写成:

x.right.first.chem_species.each 做 |atom|
  放原子
结尾
于 2013-02-17T05:33:48.627 回答