2008-01-09
local と my
このエントリの
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 の {} とどう関係があるのか今イチ分かりません><(すみません。
続き書きました
- 188 http://www.itmedia.co.jp/enterprise/articles/0712/21/news011.html
- 177 http://reader.livedoor.com/reader/
- 151 http://blog.livedoor.jp/dankogai/archives/50982802.html
- 127 http://e0166.blog89.fc2.com/blog-entry-367.html
- 116 http://e0166.blog89.fc2.com/blog-entry-365.html
- 101 http://blog.livedoor.jp/dankogai/
- 88 http://www.google.co.jp/search?q=amachang&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
- 88 http://www.itmedia.co.jp/enterprise/articles/0712/21/news011_3.html
- 77 http://blog.livedoor.jp/dankogai/archives/50981635.html
- 63 http://e0166.blog89.fc2.com/
