سؤال

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]
هل كانت مفيدة؟

المحلول

<الصورة> s لا ترجع قيمة، و @sepp2k يشير في التعليق، puts يعود nil، لذلك nil تلقائيا تصبح قيمة الإرجاع لأن ذلك هو البيان الأخير في بروك.

وانها مجرد يحصل المطبوعة إلى محطة كقيمة عودة البيان الأخير، مماثلة لتلك المخرجات خفي بعد تعيين بروك لs.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top