Rubyについて Part 15
■ このスレッドは過去ログ倉庫に格納されています
0447デフォルトの名無しさん
05/03/06 14:47:40変数と値の対応関係とか(スコープ)が実行時ではなく、コンパイル時に決定さ
れていること。 Lisp の話だけど、
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html
の中程で動的スコープと静的スコープの説明をしているのがわかりやすいかも。
Ruby で説明すると、
a = 10
l = lambda { a }
def m(a, l)
l.call()
end
m(30, l) # => 静的なら10、動的なら30になる
つまり、コンパイルする段階で、 l の中の a が何を指しているか決まってい
るので、どこで実行しても参照先が変わることはない。これが静的スコープ。
動的なら、実行時にaの対応先を調べることになり、mの第一引数が該当するか
ら結果が30になる。
■ このスレッドは過去ログ倉庫に格納されています