Почему этот код выдает ноль после Proc.call?

C:\>irb
irb(main):001:0> s = Proc.new { puts "Hello" }
=> #<Proc:0x04051780@(irb):1>
irb(main):002:0> s.call
Hello
=> nil

Что вызывает ноль?

ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]

1 ответ

Решение

sне возвращает значение, как @sepp2k указывает в комментарии, puts возвращается nil, так nil автоматически становится возвращаемым значением, так как это последний оператор в процедуре.

Он просто выводится на терминал как возвращаемое значение последнего оператора, аналогично тому загадочному выводу после того, как вы присвоите proc s,

Другие вопросы по тегам