このコードがProc.callの後にnilを生成するのはなぜですか?
-
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
nilの原因は何ですか?
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
解決
@ sepp2kがコメントで指摘しているように、 s
は値を返しません。 puts
は nil
を返します、したがって、 nil
は自動的に戻り値になります。これは、procの最後のステートメントであるためです。
procを s
に割り当てた後の不可解な出力と同様に、最後のステートメントの戻り値として端末に出力されます。
所属していません StackOverflow