A Range jirrappreżenta intervall ta' valuri — (1..10) għan-numri, ('a'..'z') għall-ittri, eċċ. Ranges huma oġġetti b'metodi utli, użati għall-iteration, slicing, membership tests, u case matching. Huma feature concise u expressive ta' Ruby.
A Range jirrappreżenta intervall ta' valuri — (1..10) għan-numri, ('a'..'z') għall-ittri, eċċ. Ranges huma oġġetti b'metodi utli, użati għall-iteration, slicing, membership tests, u case matching. Huma feature concise u expressive ta' Ruby.
(1..5) # INCLUSIVE — 1, 2, 3, 4, 5 (includes the end)
(1...5) # EXCLUSIVE — 1, 2, 3, 4 (excludes the end)
('a'..'e') # 'a', 'b', 'c', 'd', 'e' — works on letters too
Id-distinzjoni ewlenija: .. jinkludi l-aħħar, ... jeskkludi (it-tielet punt "iĝab l-aħħar"). Punt komuni li għandek tiftakar.
(1..5).each { |n| puts n } # iterate — 1 to 5
(1..5).to_a # [1, 2, 3, 4, 5] — convert to an array
(1..10).map { |n| n * 2 } # ranges support Enumerable methods
(1..100).sum # 5050
(1..10).select(&:even?) # [2, 4, 6, 8, 10]
Ranges jinkludu Enumerable, għalhekk jisupportaw each, map, select, eċċ. — u to_a iĥawwredhom f'array.
(1..100).include?(50) # true
(1..100).cover?(50) # true — faster (doesn't iterate, just checks endpoints)
age = 25
(18..65).include?(age) # check if a value falls in a range
include?/cover? jittestjaw il-membership effiċjentement (speċjalment cover?, li tħaċċeċ biss l-endpoints mingħajr iterate).
# case/when with ranges — clean range-based branching
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 0..79 then "F"
end
# array/string slicing with ranges
[10, 20, 30, 40, 50][1..3] # [20, 30, 40] — slice by range
"hello world"[0..4] # "hello" — substring by range
# endless/beginless ranges (Ruby 2.6+)
arr[2..] # from index 2 to the end
(1..) # 1 to infinity (with lazy evaluation)
Ranges huma feature utli u expressive ta' Ruby użata f'ħafna sċenarios komuni, għalhekk l-fehim tagħhom huwa valuable everyday knowledge.
Huma jirrappreżentaw b'mod concise intervals (numeriku, alfabetiku) u jidher f'diversi kontesti frekwenti: iteration ((1..5).each — mod clean biex loop fuq sekwenza), slicing ta' arrays u strings (arr[1..3], str[0..4] — ekstuzzjoni ta' sub-sekwenzi b'mod elegant), membership testing (include?/cover? — ċekking jekk valur jaqa' fi intervall, b'cover? li tkun effiċjenti għaliex tħaċċeċ biss l-endpoints), u speċjalment case/when matching (clean range-based branching, bħal grading b'score ranges — pattern komuni u readable).
L-fehim tad-distinzjoni importanti .. (inclusive) vs ... (exclusive) huwa neċessarju biex tuża ranges b'mod korrett (u punt komuni ta' confusion).
Il-għarfien li ranges jinkludu Enumerable (għalhekk jisupportaw map/select/eċċ.), kif tintuża għall-iteration, slicing, membership, u case matching, u modern features (endless/beginless ranges) hija kobertura tal-uses prattiċi.
Billi ranges jidher frekwentement f'idiomatic Ruby (iteration, slicing, range-based conditionals, validation ta' value ranges), u billi huma mod concise u expressive biex itammeħ intervals, l-fehim ta' ranges — is-syntax tagħhom (inclusive vs exclusive), metodi, u common uses (iteration, slicing, membership, case matching) — huwa useful, practically-relevant knowledge biex tikteb clean, idiomatic Ruby li tammeħ sekwenzi u intervals b'mod elegant.