すっきりした>< - 宇宙行きたい
このエントリの
our 名前をスコープに限定. local 値をスコープに限定. my 名前と値の両方をスコープに限定
は、ものすごく分かりやすいし正しいと思うんですけど、たぶん昔の僕だったら理解出来なかったかもしれません><
our 名前をソース上のスコープに限定. local 値をスタック上のスコープに限定. my 名前と値の両方をソース上のスコープに限定
なら、理解しやすいと思います><
今でも local 宣言のあるスコープ内で関数呼出しがあると混乱するの僕なのです><
追記
弾さんが反応してるので、追記
404 Blog Not Found:perl - myとourとscopeと
えっと
僕の「ソース上のスコープ」という言葉が良くなかったです><ごめんなさい
そういう意味で言ったわけではなくて、「ソース上の(なんらかの記述の位置で決まる範囲の)スコープ」という意味で言葉を使いました。
この意味だとどうでしょうか?
レキシカルスコープ、ダイナミックスコープという言葉を使わずに説明したかったのです。言葉が下手ですみません。
以下の package 宣言の有効な範囲(パッケージの範囲)もソース上のなんらかの記述の位置で決まる範囲ですよね。
以下のコードを見てみましょう。何と表示されるでしょうか。
{ package Foo; our $bar = 'baz'; } our $bar = 'drink'; warn $bar; warn $Foo::bar;「ソースに限定する」あるいは「ファイルに限定する」のだとしたら、この挙動はありえないはずです。
404 Blog Not Found:perl - myとourとscopeと
あと、以下の部分が分かりませんでした><
何でも省略できそうなPerlで、なぜif(){ ... }elsif(){ ... }else{ ... }の{}が、CやJavaScriptのように省略できない仕様になっているかの理由の一つが、これです
404 Blog Not Found:perl - myとourとscopeと
ファイルスコープとブロックスコープと if と elsif の {} とどう関係があるのか今イチ分かりません><(すみません。