मैं आलसी मूल्यांकन की अवधारणा के लिए नया हूं। जब मैं स्कैला में कोड की इस पंक्ति को निष्पादित करता हूं;स्कैला स्ट्रीम बनाम जावा स्ट्रीम आलस्य अंतर
"12334".grouped(1).toStream.filter{n => println("n:" +n); n=="3";}
यह पता प्रिंट: चुपचाप कुछ भी लिख लाइन सांत्वना देने के बिना
List<String> myList = new ArrayList<>(Arrays.asList("12334".split("")));
Stream<String> myList2 = myList.stream().filter(a -> {System.out.println("a:" +a);return "3".equals(a);});
यह समाप्त हो जाता है:
n:1
n:2
n:3
लेकिन जब मैं की तरह जावा में कुछ इसी तरह, चलाते हैं। जावा का व्यवहार मेरे लिए अधिक उचित लगता है क्योंकि स्ट्रीम का आलसी मूल्यांकन किया जाता है और मैंने परिणाम मुद्रित नहीं किया या कोशिश नहीं की। लेकिन स्कैला में भी अगर मैंने स्ट्रीम का उपभोग नहीं किया तो यह कुछ जानकारी प्रिंट करता है। तो मेरा सवाल यह है कि क्या अंतर पैदा कर रहा है?