タグ

localに関するneedingyouのブックマーク (2)

  • can は coderef を返す - Perlにまつわる小ネタ集 - モダンなPerl入門

    ->can は coderef をかえす クラスにメソッドがはえているかどうかを確認するためには、 Foo->can('bar') という風に、can メソッドをつかいます。can メソッドの return value は、boolean だと おもわれがちですが、実際にはちがいます。->can の return value は Foo->bar メソッドの coderef です。 よって、 Foo->can('bar')->('baz'); は Foo::bar('baz') と同じ意味になります。 応用編 local と can をくみあわせると、スコープの中でだけ豚を飛ばす、などといった芸当が可能になります。 my $pig = Pig->new; { local *Pig::fly = Bird->can('fly'); $pig->fly; # $pig can fly now

  • perl - myとourとscopeと : 404 Blog Not Found

    2008年01月10日10:15 カテゴリLightweight Languages perl - myとourとscopeと うーん、微妙に違います。 local と my - IT戦記 our 名前をソース上のスコープに限定. local 値をスタック上のスコープに限定. my 名前と値の両方をソース上のスコープに限定 なら、理解しやすいと思います>< 以下のコードを見てみましょう。何と表示されるでしょうか。 { package Foo; our $bar = 'baz'; } our $bar = 'drink'; warn $bar; warn $Foo::bar; 「ソースに限定する」あるいは「ファイルに限定する」のだとしたら、この挙動はありえないはずです。 ここで、Perlのスコープに関するルールを覚えておきましょう。すっごく簡単です。 {}は、問答無用でスコープを作る = b

    perl - myとourとscopeと : 404 Blog Not Found
  • 1