سؤال

إذا كنت قد شاهدت أسئلتي السابقة ، فأنت تعلم بالفعل أنني نوب كبير عندما يتعلق الأمر بـ 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top