サーチ…
実際の動的スコープ
動的スコープ変数のルックアップ関数が呼び出され、しないことが定義される範囲で起こることを意味します。
$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3
レキシカルスコープの言語では、 func1
いつもの値をグローバルスコープで見えるx
ため、 func1
ローカルスコープに定義されています。
動的スコープの言語では、 func1
は呼び出されたスコープを調べます。 func2
から呼び出されると、最初にfunc2
の本体でx
値が検索されます。そこに定義されていなければ、 func2
が呼び出されたグローバルスコープを調べます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow