为什么这段代码会在Proc.call之后产生零?

时间:2009-09-16 16:51:40

标签: ruby irb proc-object

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 个答案:

答案 0 :(得分:3)

s未返回值,正如@ sepp2k在评论中指出的那样,puts会返回nil,因此nil会自动变为s返回值,因为那是proc中的最后一个语句。

它只是作为最后一个语句的返回值打印到终端,类似于将proc分配给{{1}}后的神秘输出。