দুর্ভাগ্যক্রমে রুবি কিছুটা আলাদা। পিএস: আমার ভুল থেকে ভুল থাকলে ক্ষমাপ্রার্থীর প্রতি আমার স্মৃতিটি কিছুটা বিরক্ত
ব্রেক / চালিয়ে যাওয়ার পরিবর্তে এর ব্রেক / নেক্সট রয়েছে যা লুপের ক্ষেত্রে একই আচরণ করে
লুপস (অন্যান্য কিছুর মতো) হ'ল এক্সপ্রেশন এবং শেষ কাজটি তারা "ফিরিয়ে দেয়"। বেশিরভাগ সময়, লুপ থেকে রিটার্ন মান পাওয়া অর্থহীন, সুতরাং প্রত্যেকে এটি করে just
a = 5
while a < 10
a + 1
end
আপনি তবে এটি করতে পারেন
a = 5
b = while a < 10
a + 1
end # b is now 10
তবুও, প্রচুর রুবি কোড একটি ব্লক ব্যবহার করে একটি লুপ 'অনুকরণ করে'। ক্যানোনিকাল উদাহরণ
10.times do |x|
puts x
end
যেহেতু কোনও ব্লকের ফলস্বরূপ লোকেরা কাজগুলি করতে চাওয়া অনেক বেশি সাধারণ, তাই এটি এখানে অগোছালো হয়ে যায়। ব্রেক / পরবর্তী অর্থ একটি ব্লকের প্রসঙ্গে বিভিন্ন জিনিস।
ব্রেকটি কোডটিকে ছাড়িয়ে যাবে যা ব্লক বলে
এর পরে ব্লকের বাকী কোডটি বাদ দেওয়া হবে এবং আপনি ব্লকের কলারে যা নির্দিষ্ট করেছেন তা 'ফিরে' আসবে। উদাহরণস্বরূপ এটির কোনও অর্থ নেই।
def timesten
10.times{ |t| puts yield t }
end
timesten do |x|
x * 2
end
# will print
2
4
6
8 ... and so on
timesten do |x|
break
x * 2
end
# won't print anything. The break jumps out of the timesten function entirely, and the call to `puts` inside it gets skipped
timesten do |x|
break 5
x * 2
end
# This is the same as above. it's "returning" 5, but nobody is catching it. If you did a = timesten... then a would get assigned to 5
timesten do |x|
next 5
x * 2
end
# this would print
5
5
5 ... and so on, because 'next 5' skips the 'x * 2' and 'returns' 5.
তাই হ্যা. রুবি দুর্দান্ত, তবে এটিতে কিছু কিছু কর্ণ-কেস রয়েছে। এটি আমার ব্যবহারের বছরগুলিতে আমি দ্বিতীয়টি দেখেছি :-)