/var/log/hdk.log コメント
2013/03/15 のコメント
2013/03/15 の日記を表示する
- 2013/04/19 18:28:26 すずき さん 『 会社のRuby使いの先輩とこの話していたら、つまり、
$ irb
irb(main):001:0> v=v
=> nil
となるのが変に感じる原因だろう、って結論になりました。 』 - 2013/04/20 01:04:34 hdk さん 『 v=v は変数 v が未定義の時、変数 v に nil を代入する意味なんですね。へぇ。でもそれは lambda に比べてあまり違和感はないなぁ。 』
- 2013/04/20 12:57:46 すずき さん 『 パーサがv=まで読んだ時点で、vが定義されてしまい、その後vを参照すると値が入ってないのでnilになるんじゃないかと思います。
lamdaも同じで、a=の時点でaが定義されるので、lamdaの中で参照されるaはlamdaの外のaを見に行ってしまうんだと思います。 』 - 2013/04/20 19:39:01 hdk さん 『 なるほど、それなら説明はできますねぇ。個人的には、明示的な変数宣言がないのに lambda 実行時点でのローカル変数のスコープが保持される (lambda 時点で存在する変数は継承され存在しない変数は lambda ローカルとなる) というところに違和感を覚えてしまいました。 』
- 2013/04/20 19:45:08 hdk さん 『 JavaScript は var がポイントのようですね。関数内のどこか (本当にどこでも良い) に var による宣言があれば、その変数のスコープは関数内のみとなり、なければその外側の変数へのアクセスとなるようです。 』
- 2013/04/20 22:19:12 すずき さん 『 先輩の受け売りですが、Cのようなスコープという考え方はでなく、lamdaは「lamdaを生成した時点のコンテキストを持っている」と考えるとしっくりきました。 』
- 2013/04/20 22:29:42 hdk さん 『 そうですね。でも lambda の中でローカル変数を宣言する手段がないのは気になります。間違えて外の変数をぶっ壊してしまいそうで。 』
コメントを書く