你可以很容易地看到發生了什麼事情,如果你提取插值部分成一個變量:
alfawit = ("a".."z")
foo = alfawit.each { |litera| puts litera }
puts "That's an alphabet: \n\n #{ foo } "
第二行導致出現問題:each
爲該範圍內的每個元素調用塊,然後返回接收方,以使foo
變爲alfawit
。
這裏的另一種方式來獲得期望的結果:
alfawit = "a".."z"
puts "That's an alphabet:", alfawit.to_a
puts
輸出一個新行各的說法,但對於數組參數,它在新行各元素輸出。結果:
That's an alphabet:
a
b
c
⋮
x
y
z
同樣,你可以把範圍爲argument list通過*
:
alfawit = "a".."z"
puts "That's an alphabet:", *alfawit
這相當於:
puts "That's an alphabet:", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
什麼是你預期的結果? – Stefan
在「這是一個字母表」之後列出字母表,就像Ursus正確完成的那樣。我曾認爲我能夠按照自己的方式嵌套迭代。 – Michalko