ரூபி ranges-என்பது ஒரு தரவு தொகுப்பு (dataset), அதில் ஆரம்பம் முதல் கடைசி வரை உள்ள மதிப்பான ஒரு தருக்க தொடர்ச்சியுடன் (logical sequence) இருக்கும். Range-ல் உள்ள மதிப்புகள் எண்களாகவோ (numbers), குறியீடுகளாகவோ (characters), சரம் (string) அல்லது பொருளாகவோ (object) இருக்கலாம்.
ரூபியின் sequence range:
ரூபியில் sequence ranges-யை பயன்படுத்தி அடுத்தடுத்த மதிப்புகளை உருவாக்கலாம். அவற்றுள் ஆரம்ப மதிப்பு, இறுதி மதிப்பு மற்றும் இடையிலுள்ள எல்லை மதிப்புகள் அடங்கும்.
இத்தகைய range உருவாக்க இரண்டு operators இருக்கிறது. ஒன்று இறுதி மதிப்பையும் உள்ளடக்கிய (inclusive) இரண்டு புள்ளிகள் கொண்ட operator (..) மற்றொன்று இறுதி மதிப்பை உள்ளடக்காத (exclusive) மூன்று புள்ளிகள் கொண்ட operator (…). Inclusive operator-ல் ஆரம்பம் மற்றும் இறுதி மதிப்பு வரிசையில் அடங்கும். Exclusive range operator இறுதி மதிப்பு வரிசையில் அடங்காது.
[code lang=”ruby”]
1..10 # Creates a range from 1 to 10
1…10 # Creates a range from 1 to 9
[/code]
range-களை array-ஆக மாற்ற ரூபியில் to_a method-டை பயன்படுத்த வேண்டும். உதாரணத்திற்கு,
[code lang=”ruby”]
(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[/code]
[code lang=”ruby”]
(1…10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
[/code]
ஏற்கனவே சொன்னது போல, எல்லைகளின் மதிப்பை எண்கள் மட்டும் என்று கட்டுப்படுத்த முடியாது. குறியீடு சார்ந்த எல்லையையும் உருவாக்க முடியும்,
[code lang=”ruby”]
(‘a’..’l’).to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"]
[/code]
வார்த்தை சார்ந்த எல்லையையும் பின்வருமாறு உருவாக்கலாம்.
[code lang=”ruby”]
(‘cab’..’car’).to_a
=> ["cab", "cac", "cad", "cae", "caf", "cag", "cah", "cai", "caj", "cak", "cal", "cam", "can", "cao", "cap", "caq", "car"]
[/code]
எல்லையின் மதிப்புகள் objects-ஆகவும் இருக்கலாம். object-கள் கொண்ட range-ஐ உருவாக்க வேண்டுமெனில், அதிலுள்ள object-ஆனது, அதற்கடுத்த object-ஐ succ என்ற method மூலம் தரவல்லதாகவும், <=> operator கொண்டு ஒப்பிடக்கூடியதாகவும் இருக்கவேண்டும்.
ரூபியில் எல்லாமே object தான். அதேப்போல் range-ம் Range என்ற class-ன் object தான். Range class-ல் பல methods உள்ளன,
[code lang=”ruby”]
words = ‘cab’..’car’
words.min #வரிசையிலுள்ள சிறிய மதிப்பை பெறுவதற்கு
=> "cab"
words.max #வரிசையிலுள்ள பெரிய மதிப்பை பெறுவதற்கு
=> "car"
words.include?(‘can’) #ஒரு மதிப்பு வரிசையில் உள்ளதா என அறிய
=> true
words.reject {|subrange| subrange &amp;lt; ‘cal’} #கொடுக்கப்பட்ட நிபந்தனைக்கு உட்படும் மதிப்புகளை நிராகரிக்க
=> ["cal", "cam", "can", "cao", "cap", "caq", "car"]
words.each {|word| puts "Hello " + word} #வரிசையிலுள்ள ஒவ்வொரு மதிப்பையும் கொண்டு ஒரு வேலையை செய்ய
Hello cab
Hello cac
Hello cad
Hello cae
Hello caf
Hello cag
Hello cah
Hello cai
Hello caj
Hello cak
Hello cal
Hello cam
Hello can
Hello cao
Hello cap
Hello caq
Hello car
[/code]
ரூபி ranges as conditional expressions:
Conditional expressions-னில் ரூபி ranges பயன்படுத்தலாம். பின்வரும் எடுத்துக்காட்டில் கொடுக்கப்பட்ட எண் ஒன்றுக்கும் ஐந்துக்கும் இடையில் உள்ளதா என ranges-ஐ conditional expression-இல் பயன்படுத்தி அறியலாம்.
[code lang=”ruby”]
while a = gets.chomp.to_i
puts “lies between 1 and 5” if((1..5) === a)
end
[/code]
கீழ்கண்ட எடுத்துக்காட்டில் ‘start’ என்ற உள்ளீட்டிற்கும், ‘end’ என்ற உள்ளீட்டிற்கும் இடையில் கொடுக்கப்படும் உள்ளீடுகள் மட்டும் திரையில் பதிக்கப்படும்.
[code lang=”ruby”]
while input = gets
puts input + " triggered" if input =~ /start/ .. input =~ /end/
end
[/code]
ரூபி எல்லை இடைவெளிகள்:
குறிப்பிட்ட எல்லைக்குள் ஒரு எண்ணோ அல்லது குறிப்பிட்ட எழுத்துக்கள் குழுவில் ஒரு எழுத்தோ இருக்கிறதா என்பதை கண்டுபிடிக்க(===) என்ற equality operator-ரை பயன்படுத்தலாம்.
[code lang=”ruby”]
(1..20) === 15
=> true
(‘k’..’z’) === ‘m’
=> true
[/code]
Case statement-ல் ranges:
Ranges case statement-வுடன் சேரும்போது மிகவும் சக்தி வாய்ந்தது ஆகிறது. பலவரிகள் வரை நீளக்கூடிய நிரல்களை, மிகசிலவரிகள் கொண்டு, கச்சிதமாக எழுத இது உதவுகிறது
[code lang=”ruby”]
score = 70
result = case score
when 0..40
puts "Fail"
when 41..60
puts "Pass"
when 61..70
puts "Pass with Merit"
when 71..100
puts "Pass with Distinction"
else "Invalid Score"
end
puts result
[/code]
— தொடரும்
பிரியா – priya.budsp@gmail.com – ஐக்கிய அரபு அமீரகம்