为什么Ruby每个迭代器在执行中首先出现?

Mic*_*lko 5 ruby iteration each puts

我在Ruby中执行简单任务时遇到了一个奇怪的事情.我只想用每个方法迭代字母表,但迭代在执行中先行:

alfawit = ("a".."z")
puts "That's an alphabet: \n\n #{ alfawit.each { |litera| puts litera } } "
Run Code Online (Sandbox Code Playgroud)

这段代码导致:(缩写)

a
b
c
?
x
y
z
That's an alphabet: 

 a..z 
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它像这样工作或据说我做错了什么?

提前致谢.

Urs*_*sus 5

因为您的each调用是在固定字符串之前执行的字符串文字中插入的.另外,each返回一个Enumerable,实际上你甚至打印出来.试试这个吧

alfawit = ("a".."z")
puts "That's an alphabet: \n\n"
alfawit.each { |litera| puts litera } 
Run Code Online (Sandbox Code Playgroud)

要么

puts "That's an alphabet: \n\n"
("a".."z").each { |litera| puts litera } 
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以使用插值,但这样

alfawit = ("a".."z")
puts "That's an alphabet: \n\n#{alfawit.to_a.join("\n")}"
Run Code Online (Sandbox Code Playgroud)