முந்தைய அத்தியாயத்தில் ரூபி செயற்குறிகள் மற்றும் expressions-யை பார்த்தோம். அதற்கு இணையாக செயற்குறிகளின் முன்னுரிமையை (precedence) புரிந்து கொள்ளுதல் அவசியமாகும். ஒன்றுக்கு மேற்பட்ட செயற்குறிகள் உள்ள expression-னை ரூபி interpreter எந்த வரிசையில் மதிப்பீடு செய்யும் என்பதை முன்னுரிமை நிர்ணயிக்கிறது.
எடுத்துக்காட்டு:
நாம் expressions இடது பக்கத்திலிருந்து வலது பக்கமாக மதிப்பீடு செய்வோம். உதாரணத்திற்கு, பின்வரும் expression-னை இடது பக்கம் முதல் வலது பக்கமாக மதிப்பீடு செய்தால் விடை 300என வரும்:
[code lang=”ruby”]
10 + 20 * 10 = 300
[/code]
இடது பக்கத்திலுள்ள 10-யும் 20-தையும் கூட்டி வரும் 30-தை 10-வுடன் பெருக்கினால் 300 வரும். இதையே ரூபியில் மதிப்பீடல் செய்தால், முற்றிலும் வேறு விடையை தரும்.
[code lang=”ruby”]
10 + 20 * 10
=> 210
[/code]
ரூபியில் ஒரு expression-னிலுள்ள செயற்குறிகளை மதீப்பிடு செய்ய சில விதிமுறைகள் உண்டு. ரூபியில் கூட்டலுக்கான செயற்குறியை (+) விட பெருக்கல் செயற்குறி (*) அதிக முன்னுரிமையை கொண்டது.
Overriding operator முன்னுரிமை:
ஒரு expression-னில் குறைந்த முன்னுரிமை உள்ள பகுதியை அடைப்புக்குறிக்குள் கொடுத்து அதிக முன்னுரிமை உள்ளதாக ஆக்கலாம் உதாரணத்திற்கு,
[code lang=”ruby”]
(10 + 20) * 10
=> 300
[/code]
மேலே உள்ள எடுத்துக்காட்டில், அதிக முன்னுரிமை உள்ள பெருக்கல் குறிக்கு (*) முன்னர் அடைப்பிலுள்ள மதிப்பை மதிப்பீடு செய்யும்.
செயற்குறி முன்னுரிமை அட்டவணை:
பின்வரும் அட்டவணையில், உயர்ந்த முன்னுரிமையிலிருந்து குறைந்த முன்னுரிமை வரையிலான செயற்குறிகள் வரிசைப்படி பட்டியலிடப்பட்டுள்ளன.
Method |
Operator |
Description |
---|---|---|
ஆம் |
|
உருப்படியை அணுக (element reference), உருப்படிக்கு மதிப்பளிக்க (set element) |
ஆம் |
|
அடுக்குக்குறி (Exponentiation – raise to the power) |
ஆம் |
|
Not, complement, unary plus and minus (method names for the last two are |
ஆம் |
|
பெருக்கல், வகுத்தல், மீதி |
ஆம் |
|
கூட்டல் மற்றும் கழித்தல் |
ஆம் |
|
Right and left bitwise shift |
ஆம் |
|
Bitwise `AND’ |
ஆம் |
|
Bitwise exclusive `OR’ and regular `OR’ |
ஆம் |
|
ஒப்பீட்டு செயற்குறிகள் |
ஆம் |
|
Equality and pattern match operators ( |
|
Logical `AND’ |
|
|
Logical `AND’ |
|
|
Range (inclusive and exclusive) |
|
|
Ternary if-then-else |
|
|
Assignment |
|
|
Check if specified symbol defined |
|
|
Logical negation |
|
|
Logical composition |
|
|
Expression modifiers |
|
|
Block expression |
Overriding an operator:
மேலே உள்ள அட்டவணையிலுள்ள செயற்கூறு என்ற பத்தியில் “ஆம்” ஆக இருந்தால் அதை override செய்யலாம்.
உதரணத்திற்கு, << செயற்குறியை எடுத்துக்கொள்ளலாம். இந்த செயற்குறியின் இயல்பான பயன்பாட்டை கீழேகாணலாம்.
[code lang=”ruby”]
‘Hello’ << ‘World’
=> "HelloWorld"
[/code]
இதை override செய்ய முயற்சிக்கலாம். இரண்டாவது string-ஐ முதல் string-ன் பின்னால் இணைப்பதற்கு (suffix) பதிலாக, முன்னொட்டாக (prefix) இணைக்கவேண்டுமென்றால், << செயற்குறியை பின்வருமாறு override செய்யவேண்டும்.
[code lang=”ruby”]
class String
def <<(value)
self.replace(value + self)
end
end
‘Hello’ << ‘World’
=> "WorldHello"
[/code]
— தொடரும்
பிரியா – priya.budsp@gmail.com – ஐக்கிய அரபு அமீரகம்