English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
النطاق (Range) متاح في كل مكان: من a إلى z، من 0 إلى 9، وما إلى ذلك. يدعم Ruby النطاقات ويوفر لنا طرقًا مختلفة لاستخدام النطاقات:
كنطاق للسلسلة
النطاق كشرط
النطاق كفجوة
أول استخدام للنطاق وأكثره شيوعًا هو التعبير عن السلسلة. السلسلة لها نقطة انطلاق ونقطة نهاية وكيفية إنتاج القيم المتتابعة.
يستخدم Ruby ''..'' و ''...'' المساهمة في إنشاء هذه السلاسل. يشكل الشكل المزدوج نقطة انطلاق لسلسلة تحتوي على القيمة الأعلى المحددة، بينما يشكل الشكل الثلاثي نقطة انطلاق لسلسلة لا تحتوي على القيمة الأعلى المحددة.
(1..5) #==> 1, 2, 3, 4, 5 (1...5) #==> 1, 2, 3, 4 ('a'..'d') #==> 'a', 'b', 'c', 'd'
السلسلة 1..100 هي Range الاشياء، تحتوي على اثنين Fixnum المرجع إلى الاشياء. إذا كنت بحاجة إلى ذلك، يمكنك استخدام to_a يحوّل الطريقة النطاق إلى قائمة. جرب الأمثلة التالية:
#!/usr/bin/ruby $, =", " # Array value separator range1 = (1..10).to_a range2 = ('bar'..'bat').to_a puts "#{range1}" puts "#{range2}"
نتيجة النسخة التجريبية أعلاه هي:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ["bar", "bas", "bat"]
يقدم النطاق لك طرقًا لاستدعاء محتوياته:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- # تحديد النطاق digits = 0..9 puts digits.include?(5) ret = digits.min puts "أصغر قيمة هي #{ret}" ret = digits.max puts "أكبر قيمة هي #{ret}" ret = digits.reject {|i| i < 5 } puts "المستبعدون من الشروط هم #{ret}" digits.each do |digit| puts "في الدورات #{digit}" fin
نتيجة النسخة التجريبية أعلاه هي:
true أصغر قيمة هي 0 أكبر قيمة هي 9 المستبعدون من الشروط هم [5, 6, 7, 8, 9] في الدورات 0 في الدورات 1 في الدورات 2 في الدورات 3 في الدورات 4 في الدورات 5 في الدورات 6 في الدورات 7 في الدورات 8 في الدورات 9
النطاق يمكن أن يكون أيضًا تعبيرًا شرطيًا. على سبيل المثال، الفقرة التالية من الكود تقوم بطباعة السطور من المدخل القياسي، حيث يحتوي كل مجموعة من السطور الأولى على كلمة start،السطر الأخير يحتوي على كلمة end.:
while gets print if /start/../end/ fin
النطاق يمكن استخدامه في جملة case:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- score = 70 result = case score when 0..40 "糟糕的分数" when 41..60 "快要及格" when 61..70 "نسبة النجاح" when 71..100 "نسبة جيدة" else "نسبة خطأ" fin puts result
نتيجة النسخة التجريبية أعلاه هي:
نسبة النجاح
أحد استعمالات النطاقات هو التحقق من الفجوات: التحقق من ما إذا كان القيمة المحددة في النطاق المحدد. يجب استخدام عميل المساواة === للقيام بالحسابات.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- if "(1..10) === 5" puts "5 في (1..10)" fin if "('a'..'j') === 'c' puts "c في ('a'..'j')" fin if "('a'..'j') === 'z' puts "z في ('a'..'j')" fin
نتيجة النسخة التجريبية أعلاه هي:
5 في (1..10) c في ('a'..'j')