2013-03-04 5 views
7

मैं जावा 8 के साथ कैसे लिख सकते हैं बंद एक विधि है कि तर्क के रूप में एक समारोह लेने के लिए और मूल्य के रूप में वापसी समारोह का समर्थन के साथ?लैम्ब्डा अभिव्यक्ति और उच्च क्रम कार्यों

+0

[जावा ड्राफ्ट विनिर्देश के लिए बंद (नील गफ्फर और पीटर वॉन डेर आह द्वारा)] (http://javac.info/) –

+2

@Quoi वह वेबसाइट साल पहले मरने वाले प्रस्तावों से संबंधित है। जावा 8 कार्यान्वयन की प्रगति के लिए http://lambdafaq.org देखें –

+0

@ मॉरीसनाफ्टालिन धन्यवाद –

उत्तर

11

जावा लैम्ब्डा एपीआई में मुख्य वर्ग java.util.function.Function है।

आप इस इंटरफ़ेस के संदर्भ का उपयोग उसी तरह कर सकते हैं जैसे आप अन्य सभी संदर्भों के साथ करेंगे: इसे चर के रूप में बनाएं, गणना के परिणामस्वरूप इसे वापस करें और इसी तरह।

यहाँ काफी सरल उदाहरण है जो आपकी मदद कर सकते है:

public class HigherOrder { 

     public static void main(String[] args) { 
      Function<Integer, Long> addOne = add(1L); 

      System.out.println(addOne.apply(1)); //prints 2 

      Arrays.asList("test", "new") 
        .parallelStream() // suggestion for execution strategy 
        .map(camelize)  // call for static reference 
        .forEach(System.out::println); 
     } 

     private static Function<Integer, Long> add(long l) { 
      return (Integer i) -> l + i; 
     } 

     private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1); 
    } 

आप और अधिक तो 1 पैरामीटर पारित करने के लिए की जरूरत है, तो कृपया compose विधि में एक बार देख ले, लेकिन इसके उपयोग काफी मुश्किल है।

सामान्य रूप से जावा में मेरी राय बंद और लैम्ब्डा से मूल रूप से वाक्यविन्यास-चीनी है, और उनमें कार्यात्मक प्रोग्रामिंग की सभी क्षमताओं की प्रतीत नहीं होती है।

+0

उत्तर के लिए बहुत बहुत धन्यवाद! क्या आप जानते हैं कि यह लागू है या नहीं: जोड़ें (8) (10) क्योंकि यह बहुत उबाऊ है: जोड़ें (8) .apply (10) – xdevel2000

+0

दुर्भाग्य से ऐसा लगता है कि कम से कम नहीं - अब – n1ckolas

+0

n1ckolas, क्षमा करें , मुझे कोई रचना विधि नहीं मिल रही है ... मैं अधिक पैरामीटर के साथ एक फ़ंक्शन लिखने के लिए उदाहरण कहां देख सकता हूं? – xdevel2000

संबंधित मुद्दे