Почему этот код выдает ноль после 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
,