لنفترض أنك تريد جميع الأعداد الصحيحة غير السالبة حتى 1000. سيكون أمرًا سخيفًا أن تضطر إلى كتابتها كلها داخل مصفوفة.
لهذا لدينا النوع range:
julia> 0:1000
0:1000
julia> typeof(0:1000)
UnitRange{Int64}
المدى شائع جدًا: ليس فقط ليوفر عليك الكتابة، بل ويُستخدم أيضًا كنوع للقيم التي تُرجعها الدوال.
لاحظ أن المدى ليس متجهًا. إنه مجرد مجموعة من التعليمات لتوليد متتالية (تقييم «كسول»، أو «مُكرِّر»).
إذا احتجت إلى المدى كمتجه، فاستخدم دالة collect() للتحويل:
julia> collect(0:5)
6-element Vector{Int64}:
0
1
2
3
4
5
يمكن تحديد حجم الخطوة، وهو في هذه الحالة 0.3:
julia> collect(1.0:0.3:2.0)
4-element Vector{Float64}:
1.0
1.3
1.6
1.9
إذن الصيغة هي start:stepsize:stop.
الحدّان الطرفيان مشمولان، كما ترى في مثال الأعداد الصحيحة.
وإذا لم يكن حجم الخطوة مقسومًا قسمة تامة على stop - start، فسيتجنّب العنصر الأخير تجاوز stop.
يمكن أيضًا استخدام متتاليات غير رقمية في المدى. وأبسط مثال على ذلك حروف ASCII:
julia> 'a':'d'
'a':1:'d'
julia> typeof('a':'d')
StepRange{Char, Int64}
julia> collect('a':'d')
4-element Vector{Char}:
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)
سنغطي نوع Char بمزيد من التفصيل في مفهوم آخر.
في الوقت الحالي، تعامل معها على أنها محارف مفردة بين علامتي تنصيص مفردتين.
افحص حدّي المدى باستخدام first() وlast().
r = 1:10 # => 1:10
first(r) # => 1
last(r) # => 10
يمكن استخدام مديات الأعداد الصحيحة والمتجهات في فهرسة المتجهات:
nums = collect(10.0:50.0)
nums[3:2:7] # gives [12.0, 14.0, 16.0]
nums[ [3, 5, 7] ] # also gives [12.0, 14.0, 16.0]
بصفتك من عشاق الشطرنج، تودّ أن تكتب نسختك الخاصة من اللعبة. نعم، ربما توجد بالفعل تطبيقات كثيرة للشطرنج متاحة على الإنترنت، لكن نسختك ستكون فريدة!
لكن قبل أن تُطلق العنان لخيالك، عليك أن تهتم بالأساسيات. لنبدأ بتوليد الرقعة.
يُحدَّد كل مربع من مربعات رقعة الشطرنج بزوج من حرف ورقم. الأعمدة الرأسية للمربعات، وهي ما يُسمى بالأعمدة، تُعنون بالحروف من A إلى H. أما الصفوف الأفقية للمربعات، وهي ما يُسمى بالصفوف، فتُرقَّم من 1 إلى 8.
نفّذ الدالة rank_range(). ينبغي أن تُرجع مدى من الأعداد الصحيحة، من 1 إلى 8.
julia> rank_range()
# output omitted
نفّذ الدالة file_range().
ينبغي أن تُرجع مدى من المحارف، من الحرف الكبير A إلى الحرف الكبير H.
julia> file_range()
# output omitted
نفّذ الدالة ranks(). ينبغي أن تُرجع متجهًا من الأعداد الصحيحة، من 1 إلى 8.
لا تكتب المتجه يدويًا، بل ولّده من المدى الذي تُرجعه الدالة rank_range().
julia> ranks()
[1, 2, 3, 4, 5, 6, 7, 8]
نفّذ الدالة files. ينبغي أن تُرجع متجهًا من المحارف، من 'A' إلى 'H'.
لا تكتب المتجه يدويًا، بل ولّده من المدى الذي تُرجعه الدالة file_range().
julia> files()
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.