为什么这段代码会在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
不返回值, puts
返回 nil
,所以 nil
自动成为返回值,因为这是proc中的最后一个语句。
它只是作为最后一个语句的返回值打印到终端,类似于将proc分配给 s
之后的那个神秘输出。
不隶属于 StackOverflow