எளிய, இனிய கணிணி மொழி – ரூபி – 12 – செயற்குறிகளின் முன்னுரிமை

முந்தைய அத்தியாயத்தில் ரூபி செயற்குறிகள் மற்றும் 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 +@ and -@)

ஆம்

* / %

பெருக்கல், வகுத்தல், மீதி

ஆம்

+ -

கூட்டல் மற்றும் கழித்தல்

ஆம்

>> <<

Right and left bitwise shift

ஆம்

&

Bitwise `AND’

ஆம்

^ |

Bitwise exclusive `OR’ and regular `OR’

ஆம்

<= < > >=

ஒப்பீட்டு செயற்குறிகள்

ஆம்

<=> == === != =~ !~

Equality and pattern match operators (!= and !~ may not be defined as methods)

&&

Logical `AND’

||

Logical `AND’

.. ...

Range (inclusive and exclusive)

? :

Ternary if-then-else

= %= { /= -= += |= &= >>= <<= *= &&= ||= **=

Assignment

defined?

Check if specified symbol defined

Not

Logical negation

or and

Logical composition

if unless while until

Expression modifiers

begin/end

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 – ஐக்கிய அரபு அமீரகம்

%d bloggers like this: