IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

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 の {} とどう関係があるのか今イチ分かりません><(すみません。