தொகுதி பாடங்கள் (1/2)
லாம்ப்டா வெளிப்பாடுகள்
Java 8 இலிருந்து தொடங்கி, செயல்பாட்டு நிரலாக்கமானது Lambda Expressions வழியாக ஆதரிக்கப்படுகிறது. ஒரு லாம்ப்டா வெளிப்பாடு அடிப்படையில் ஒரு அநாமதேய முறையாகும் (பெயர் இல்லாத ஒரு செயல்பாடு) இது முறைகளுக்கு ஒரு வாதமாக அனுப்பப்படலாம் அல்லது மாறிகளில் சேமிக்கப்படும்.
செயல்பாட்டு இடைமுகங்கள்
செயல்பாட்டு இடைமுகம் தேவைப்படும் இடத்தில் மட்டுமே லாம்ப்டா வெளிப்பாடு பயன்படுத்தப்படும். செயல்பாட்டு இடைமுகம் என்பது சரியாக ஒரு சுருக்க முறையை அறிவிக்கும் ஒரு இடைமுகமாகும். Java இந்த இடைமுகங்களை விருப்பமான @FunctionalInterface சிறுகுறிப்புடன் குறிக்கிறது.
பயனர் வரையறுக்கப்பட்ட செயல்பாட்டு இடைமுகத்தின் எடுத்துக்காட்டு:
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}ஜாவா 8 க்கு முன், நீங்கள் ஒரு அநாமதேய உள் வகுப்பை வரையறுக்க வேண்டும். லாம்ப்டாஸ் மூலம், தொடரியல் எளிமைப்படுத்தப்பட்டுள்ளது:
MathOperation addition = (a, b) -> a + b;
int result = addition.operate(5, 3); // Returns 8லாம்ப்டா வெளிப்பாடுகளின் அமைப்பு
லாம்ப்டாவின் அடிப்படை தொடரியல்:
(parameters) -> { body }
- அளவுருக்கள் இல்லாமல்:
() -> System.out.println("Hello") - ஒற்றை அளவுரு:
x -> x * 2(அடைப்புக்குறிகளைத் தவிர்க்கலாம்) - பல அளவுருக்கள்:
(x, y) -> x + y - மல்டி-லைன் பாடி: உடலில் பல அறிக்கைகள் இருந்தால், பிரேஸ்கள்
{}மற்றும் வெளிப்படையானreturnஅறிக்கை தேவை.
MathOperation detailedAddition = (a, b) -> {
System.out.println("Adding...");
return a + b;
};ஜாவாவில் நிலையான செயல்பாட்டு இடைமுகங்கள்
java.util.function தொகுப்பு பல உள்ளமைக்கப்பட்ட செயல்பாட்டு இடைமுகங்களை வழங்குகிறது:
Predicate<T>:Tவகை வாதத்தை ஏற்றுக்கொண்டு, பூலியன் (test(T t)முறை) ஐ வழங்குகிறது.Consumer<T>:Tவகையின் வாதத்தை ஏற்றுக்கொண்டு, முடிவைத் தராமல் ஒரு செயல்பாட்டைச் செய்கிறது (accept(T t)முறை).Function<T, R>: ஒரு வாதத்தை ஏற்றுTமுடிவை வழங்குகிறதுR(apply(T t)முறை).Supplier<T>: எந்த வாதங்களையும் ஏற்காது மற்றும்Tவகையின் மதிப்பை வழங்கும் (get()முறை).
நீங்களே முயற்சி செய்து பாருங்கள்
இரண்டு முழு எண்களைச் சேர்க்கும் லாம்ப்டா எக்ஸ்பிரஷனைப் பயன்படுத்தி கால்குலேட்டர் இடைமுகத்தை நிறுவுவதன் மூலம் குறியீட்டை முடிக்கவும். பின்னர், 5 மற்றும் 3 ஐ கடந்து கணக்கிடும் முறையை செயல்படுத்தவும், முடிவை அச்சிடவும்.
குறிப்பைக் காட்டு
`கால்குலேட்டர் சேர் = (a, b) -> a + b;` என்று அறிவித்து, அச்சு அழைப்பின் உள்ளே `adder.calculate(5, 3)` ஐ அழைக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
ஸ்ட்ரிங் நீளம் 5 எழுத்துகளுக்கு அதிகமாக உள்ளதா என்பதைச் சரிபார்க்கும் லாம்ப்டா எக்ஸ்பிரஷனைப் பயன்படுத்தி isLong என்ற பெயரிடப்பட்ட நிலையான செயல்பாட்டு இடைமுகத்தின் உதாரணத்தை உருவாக்கவும். பின்னர் 'ஹலோ வேர்ல்ட்' என்ற சோதனை முடிவை அச்சிடவும்.
குறிப்பைக் காட்டு
`Predicate<String>`க்கான லாம்ப்டா ஒரு அளவுரு `s` ஐ எடுத்து `s.length() > 5` ஐ பூலியன் நிபந்தனையாக வழங்குகிறது.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
சரங்களின் பெயர்களின் பட்டியலை அகர வரிசைப்படி வரிசைப்படுத்தவும், அதில் உள்ள வரிசை() முறையைப் பயன்படுத்தி, ஒப்பீட்டாளரைச் செயல்படுத்தும் ஒரு லாம்ப்டா எக்ஸ்ப்ரெஷனை அனுப்பவும் (இரண்டு சரங்களை s1, s2 எடுத்து அவற்றை compareTo ஐப் பயன்படுத்தி ஒப்பிடவும்).
குறிப்பைக் காட்டு
பட்டியலை இடத்தில் வரிசைப்படுத்த `names.sort((s1, s2) -> s1.compareTo(s2));` ஐப் பயன்படுத்தவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்