கரியிங் (Currying)
Currying என்பது பல வாதங்களைக் கொண்ட ஒரு செயல்பாட்டை உள்ளமைக்கப்பட்ட செயல்பாடுகளின் வரிசையாக மாற்றும் செயல்பாட்டு நிரலாக்கத்தில் உள்ள ஒரு மேம்பட்ட நுட்பமாகும். இது f(a,b,c) என்று அழைக்கக்கூடிய செயல்பாட்டை f(a)(b)(c) என்று அழைக்கக்கூடியதாக மாற்றுகிறது. இது ஒரு செயல்பாட்டை அழைக்காது, மாறாக அதை மாற்றுகிறது.
கரியிங் (currying) பற்றி நன்கு புரிந்துகொள்ள, மூன்று வாதங்களை எடுத்து அவற்றின் கூட்டுத்தொகையைத் (sum) திருப்பித் தரும் எளிய add செயல்பாட்டை (function) உருவாக்குவோம். பின்னர், ஒரு உள்ளீட்டை (input) எடுத்து, அதன் கூட்டுத்தொகையுடன் தொடர்ச்சியான செயல்பாடுகளைத் திருப்பித் தரும் addCurry செயல்பாட்டை உருவாக்குகிறோம்.
// Noncurried version
const add = (a, b, c)=>{
return a+ b + c
}
console.log(add(2, 3, 5)) // 10
// Curried version
const addCurry = (a) => {
return (b)=>{
return (c)=>{
return a+b+c
}
}
}
console.log(addCurry(2)(3)(5)) // 10
இங்கே, கரியிங் செய்யப்பட்ட (curried) மற்றும் கரியிங் செய்யப்படாத (noncurried) இரண்டு பதிப்புகளும் (versions) ஒரே முடிவைத் திருப்பித் தருவதை நாம் காணலாம். பல காரணங்களுக்காகக் கரியிங் பயனுள்ளதாக இருக்கும், அவற்றில் சில இங்கே குறிப்பிடப்பட்டுள்ளன.
- ஒரே மாறியை (variable) மீண்டும் மீண்டும் அனுப்புவதைத் (passing) தவிர்க்க இது உதவுகிறது.
- இது செயல்பாட்டை ஒற்றைப் பொறுப்புடன் (single responsibility) சிறிய பகுதிகளாகப் பிரிக்கிறது, இது செயல்பாட்டைப் பிழை குறைவானதாக (less error-prone) ஆக்குகிறது.
- செயல்பாட்டு நிரலாக்கத்தில் உயர்-வரிசை (high-order) செயல்பாட்டை உருவாக்க இது பயன்படுத்தப்படுகிறது.