Почему этот код выдает ноль после Proc.call? - PullRequest
0 голосов
/ 16 сентября 2009
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 Ответ

3 голосов
/ 16 сентября 2009

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

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

...