Ruby ක්රමලේඛන භාෂාවෙහි unless සහ until යන යතුරුපද දෙක, නවකයන්ට පවා ගැඹුරු ගැටළු සලසයි. බොහෝ විට මේවා ‘if not’ සහ ‘while not’ ලෙස පරිවර්තනය කරයි, නමුත් එය වැරදි අදහසකි. මෙම ලිපියේදී, unless සහ until නවතම ක්රමලේඛන සංකල්පයක් ලෙස, ගැටළුවක් නොව, පරිගණක ක්රියාවලියෙහි ‘කියවීම’ ලෙසම හඳුන්වමු.
unless යනු, කොන්දේසිය සත්ය වුවහොත් කාර්යය ක්රියා නොකරන ප්රකාශයකි. උදාහරණයක් ලෙස, result = 2 unless a && b කියන්නේ a && b සත්ය නම් result අගය 2 නොදෙන බවයි. එය if ප්රකාශයේ ප්රතිලෝමය නොව, ක්රියාකාරකමට ‘අවහිර’ කිරීමක් ලෙස සලකන්න.
Guard clause (රක්ෂක ප්රකාශ) සමඟ භාවිතා කළ විට, unless සහ if එකිනෙකට වෙනස් කාර්යභාරයක් ගනී. return if a && b කියන්නේ කොන්දේසිය සත්ය වුනහොත් ක්රියාකාරකම අවසන් කරයි. එයට විරුද්ධව, return unless a && b කියන්නේ කොන්දේසිය සත්ය වුන විට පමණක් ක්රියා කරයි. මෙය blacklist (අවහිර) සහ whitelist (අවසර) ලෙස සැලකිය හැක.
until ප්රකාශය ලූපයක් (loop) නිමවන අවස්ථාව සලකයි. කොන්දේසිය සත්ය වුන විට ලූපය නවත්වයි. උදාහරණයක්: i = 0; until (i -= 1) <= 0; puts i; end කියන්නේ i අගය 0 හෝ අඩු වුන තෙක් ලූපය පවත්වා ගැනීමයි. while ප්රකාශයට වඩා until භාවිතා කිරීම, “කොන්ත්රාස්ට් ඉලක්කය” පැහැදිලි කරයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයින්ට unless සහ until ගැන නිවැරදි අවබෝධයක් තිබීම, කේත ලේඛනයේ වැරදි අවස්ථා අඩු කරයි. මෙය:
- කේත පිරිසිදු කිරීම (clean code) වැඩි කරයි, එමඟින් RuboCop වැනි ස්වයංක්රීය පරීක්ෂකයන් සමඟ ගැටළුවක් නොසිදුවේ.
- ග්රාහක පාර්ශ්වීය යෙදුම් නිර්මාණයේ ගැඹුරු ලොජික් ගොඩනැගීමට උපකාරී වේ, එමඟින් ව්යාපාරික ගැටලු අඩු වේ.
- ශ්රී ලංකාවේ තාක්ෂණික පාඨමාලා වලට නවතම Ruby සංකල්පයන් ඇතුළත් කිරීම, ජාත්යන්තර තරඟවලට සූදානම් කාර්ය මණ්ඩලයක් ගොඩනැගීමට දායක වේ.
ඒ නිසා, unless සහ until යන යතුරුපද දෙකේ භාවිතය පරිපූර්ණ කර ගැනීම, රුබි සංවර්ධකයින්ගේ නිපුණතා වැඩි කරයි, ඒමෙන්ම ශ්රී ලංකාවේ තාක්ෂණික ආර්ථිකයට නව ගමන්පථයක් සලසයි.
අවසානයේ, unless හා until යනු ‘if not’ සහ ‘while not’ යන අර්ථයෙන් වෙනස්ව, කොන්දේසියේ ‘ප්රතිචාර’ (behavior) වෙනස් කරන ප්රකාශ වේ. until ලූප සඳහා while තරඟයට වඩා සුදුසු ය, එය කේතය කියවීමට පහසු කරයි. මේ සංකල්පයන් අධ්යයනය කර, ඔබේ Ruby කේතය තවත් ශක්තිමත් කරගන්න.