回答編集履歴

1

捕捉

2017/01/28 07:39

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -15,3 +15,49 @@
15
15
 
16
16
 
17
17
  で値が取れました。
18
+
19
+
20
+
21
+ ---
22
+
23
+
24
+
25
+ ちょっと補足します(Oracle JDK8にはいっているエンジンを使ってます):
26
+
27
+
28
+
29
+ engine.get("C");
30
+
31
+
32
+
33
+ ならCの値が返ってきます。質問者さんが実行されたように
34
+
35
+
36
+
37
+ engine.get("tmp")
38
+
39
+
40
+
41
+ でもできるのですよね。要するにgetは単純に変数名だけを指定してその値を取ってくるという目的のもののようです。
42
+
43
+
44
+
45
+ C.version
46
+
47
+
48
+
49
+ は「Cという変数に入っているオブジェクトのversionというプロパティーを得る」ということなのでしょうから、単なる変数の参照ではなくJavascriptエンジンに式の評価をさせなければならないということだと思います。そのためgetはNGでevalならOKになるのでしょう。
50
+
51
+
52
+
53
+ 実際にgetの中を見てみると「引数をキー名として、そのキーに対応する値があるか?」のような単純な処理しかしていないように見えました。
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+