嗯,我挖通過Java8 Lambda和我現在面臨如下問題 - 拉姆達不改變數據:的Java 8拉姆達不改變數據
DamnLambda.class:
public static void inc (List<Integer> list, Funtion<Integer,Integer> func) {
for(Integer intr : list) {
intr = func.apply(intr);
}
讓我們嘗試調用:
List<Integer> l = Arrays.asList(1,2,3);
DamnLambda.inc(l, x -> x+=1);
System.out.println(l); //[1,2,3] ? Why not [2,3,4] ?
我不能低估它爲什麼不改變任何數據。 我也嘗試過不同版本的相同的功能:
l.forEach(x -> x+1); //same thing, doesn't change the data.
缺少什麼我在這裏?
將值賦給循環迭代變量將不起作用,實際上不應該這樣做。 –
您錯過了函數式編程的要點。你不應該改變輸入。你應該生成輸出的變換。 –
好吧,你讓我了,我一味地試圖在列表上執行一些lambda操作,並忘記了原始規則之一。順便說一句。代碼編譯。 – krzakov