سؤال
إذا كنت قد شاهدت أسئلتي السابقة ، فأنت تعلم بالفعل أنني نوب كبير عندما يتعلق الأمر بـ Ruby. لذلك ، اكتشفت هذا الموقع المخصص للبرمجة C ، لكنني اعتقدت أن ما يمكن أن يفعله المرء في C ، يجب أن يكون ممكنًا في Ruby (وأكثر قابلية للقراءة أيضًا).
التحدي هو طباعة مجموعة من الأرقام. لقد اكتشفت هذه الطريقة الأنيقة .upto () واستخدمت كتلة (وفهم غرضها بالفعل). ومع ذلك ، في IRB ، حصلت على بعض السلوك غير المتوقع.
class MyCounter
def run
1.upto(10) { |x| print x.to_s + " " }
end
end
irb(main):033:0> q = MyCounter.new
=> #<MyCounter:0x5dca0>
irb(main):034:0> q.run
1 2 3 4 5 6 7 8 9 10 => 1
ليس لدي أي فكرة من أين يأتي => 1: هل يجب أن أفعل هذا خلاف ذلك؟ أتوقع الحصول على هذه النتيجة:
1 2 3 4 5 6 7 8 9 10
شكرا لك على إجاباتك وتعليقاتك وتعليقاتك!
المحلول
ليس لدي أي فكرة من أين يأتي => 1
لا تقلق. بشكل افتراضي irb
يطبع القيمة العائدة لتنفيذ الطريقة.
حتى لو لم تكتب return
بيان (مثل في C على سبيل المثال) Ruby إرجاع قيمة آخر عبارة محسوبة.
في هذه الحالة كان 1
هذا كل شئ.
على سبيل المثال حاول:
class WhereIsTheReturn
def uh?
14 * 3 # no return keyword
end
end
whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
نصائح أخرى
"=> 1" من IRB ، وليس الكود الخاص بك. بعد كل عبارة تكتبها في IRB ، يطبع نتيجة هذا البيان بعد موجه "=>".
حاول طباعة خط جديد في وظيفتك:
def run
1.upto(10) { |x| print x.to_s + " " }
print "\n"
end
ثم ستبدو هكذا:
irb> q.run
1 2 3 4 5 6 7 8 9 10
=> nil