print + each () block - почему не работает объединение? - PullRequest
1 голос
/ 13 февраля 2009

Я ожидаю этот вывод:

output:xyz

Но если я наберу следующее:

a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s

Почему я получаю xyz перед выводом слова и после него?

xyzoutput:xyz 

Ответы [ 2 ]

4 голосов
/ 13 февраля 2009

In irb:

>> %w{x y z}.each {|i| i }
=> ["x", "y", "z"]

Возвращаемым значением вызова each является объект Enumerable, к которому он был вызван. Таким образом, вы в основном распечатываете каждый элемент массива в блоке, который вы передаете each, а затем преобразуете массив в строку и печатаете его снова, связав его со строкой "output:".

1 голос
/ 13 февраля 2009

вероятно, что вы хотите здесь:

puts "output: #{a.join}"

или, более подробно, если идея проясняется следующим образом:

puts "output: #{a.map {|element| element.to_s}.join}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...