Почему этот код выдает ноль после Proc.call?
-
07-07-2019 - |
Вопрос
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]
Решение
Как указывает @ sepp2k в комментарии, s
не возвращает значение, put
возвращает nil
поэтому nil
автоматически становится возвращаемым значением, поскольку это последний оператор в proc.
Он просто выводится на терминал как возвращаемое значение последнего оператора, аналогично тому загадочному выводу после назначения процедуры s
.
Не связан с StackOverflow