hns - 日記自動生成システム - Version 2.19.9

先月 2007年07月 来月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2007年07月15日() 旧暦 [n年日記] [更新:"2007/07/16 01:16:39"]

#1 [Lang] Perl の my と local もひとつ our

Perl の変数宣言で my と local の違いは、google で探せば、多くの説明が見つかる。 しかし、似たもので、もう一つあったのを思い出せない。 use strict で Jcode.pm を使う時だったか。 Getopts の方だ。 弾 小飼さんの Web: perl - use strict; # and be happy を見ていたら、 探していたのは our らしいと分った。有難い。
my局所変数 local variable (perl 5 以降)
local大域変数を上書きして使う。外に戻れば、その値は捨てられる
our短い名前を使えるようにしてくれる
例えば package config の中で宣言されている $my_name は、package config 以外では
 $config::my_name; 
と書く必要がある。しかし our を使えば、$my_name だけで参照出来る。
# 話の都合上 Getopt を使うとする
use Getopt::Std;
# 宣言
our(%opts);
# 参照
getopt('t',\%opts ); # opt_t for TeX output;
2007-02-22 my,our,localってわかりにくぃ ? !
説明を読みましょう、ということで
 perldoc -f our
しかし説明の一番最初に、次のように言われると、
"our" associates a simple name with a package variable in the current package for use within the current scope.
これだけで大抵の人は、退散してしまうのでは、と思う。
our で変数を宣言すると、 パッケージ内 で宣言されている変数を、 今の名前空間で、短い名前で使えるようにする
これだとちょっと不完全なので:
our で変数を宣言すると、 (現在有効となっている) パッケージ 内で宣言されている変数を、 今の名前空間で、短い名前で使えるようにする。これはサブルーチン等で呼出した先で も利用可能
今更だけれど our って my の複数形だね。
my自分だけの
our私達の
localちょっと許してね
普通の(局所)変数は my を使う。local が必要なのは、こういう時、っていう説明があると いいかも知れない。

ただし、perl 4 で local だけだったのが perl 5 で my + local になった訳だから、 良く考えずに local だけで書いていても、(まあ)何とかなる、という考え方も あるかも知れない。しかし苦肉の策としての上位互換なのだから、なるべく my に置換えた方がいいよ、と言っておこう。

上の英語だけれど、associates ... with ___ , ___ を ... と関連付ける、 というのは母国語ならすぐ意味が分るのかな。しかし、a simple variable, a package variable の両方に a が付いているけれど、ちょっと違うのでは、 という気がする。英語的には「ある名前を .. ある名前の」だから、 確かに両方 a かも知れないが。 少なくとも、

"our" associates a simple name with its package variable in the current package for use within the current scope.
の気がする。



最近の日記
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
2024年02月29日
opendkim and senmail
2024年01月24日
chat/iam 0.0.8
2024年01月21日
uselocale vs setlocale (textproc/R-readxl)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)