質問編集履歴
1
コードを選択して、</>を押してみました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,15 +3,18 @@
|
|
3
3
|
「ラムダ式には「自身が評価され関数の実体が生み出される際、その時点でアクセス可能なすべての変数の情報を記憶し、ラムダ式内で利用できる」という特徴があります。
|
4
4
|
つまり、次のようなコードが記述可能なのです。
|
5
5
|
|
6
|
+
```ここに言語を入力
|
6
7
|
double b = 4.3;
|
7
8
|
IntDoubleFunction fun = x -> x*x*3.14;
|
8
9
|
|
10
|
+
```
|
9
11
|
ただし、ラムダ式内でラムダ式外にある変数を書き換えることはできません。
|
10
12
|
また、ラムダ式外にある変数bは内容が変化しない実質的にfinalな変数である必要があります。」
|
11
13
|
|
12
14
|
最後の文書「実質的にfinalな変数である必要があります。」についてですが、これってどういう意味なんでしょうか。
|
13
15
|
次のようなコードを書いてみました。
|
14
16
|
|
17
|
+
```ここに言語を入力
|
15
18
|
import java.util.function.IntToDoubleFunction;
|
16
19
|
|
17
20
|
public class Main {
|
@@ -22,6 +25,7 @@
|
|
22
25
|
System.out.println(c);
|
23
26
|
}
|
24
27
|
}
|
28
|
+
```
|
25
29
|
|
26
30
|
上のコードの変数aはfinalではなく、実行の度に値が変わりますが、問題なく動作しました。
|
27
31
|
しかしながら、確かに、一つの実行の時には、値が定まるという意味ではfinalな変数になっているのかもしれませんが、なんとなく腑に落ちない感じです。
|