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')