Tembel değerlendirme kavramına yeni katılıyorum. Scala'da bu kod satırını çalıştırdığımda;Scala Stream - Java Stream Laziness Farkı
"12334".grouped(1).toStream.filter{n => println("n:" +n); n=="3";}
Dışarı yazdırır: sessizce çizgiyi konsola şey yazmadan
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);});
O sonlandırır:
n:1
n:2
n:3
Ama böyle Java benzer bir şey, çalıştırdığınızda. Java'nın davranışı bana göre daha mantıklı geliyor çünkü Akımlar tembel bir şekilde değerlendiriliyor ve topladım ya da sonucu yazdırmaya çalışmıyorum. Fakat Scala'da akış tüketmediysem bile bazı bilgileri basar. Yani benim sorum bu farklılığa neden olan şey nedir?