From: Hisashi Yahata Date: 2005-01-13T18:34:54+09:00 Subject: [ruby-list:40533] Re: procの動作について(質問) ちば様  (千葉 敬介様) 桑島様  ちば様へのお礼が、個人宛になっていましたので、再掲します。  また、桑島様からもご指摘をいただき、有り難うございました。  すでにお礼の中(下の文)でも述べましたように、サブルーチンには、def..endが 利用できることは理解していますが、引数でデータ交換する(配列にすれば一文字で すむわけですが、)が、すっきりせずに、面倒な印象があるからです。  また、procの面白い使い方をご教示いただき勉強になりました。 ==先に出したお礼状==  早速、的確な回答をいただき、誠に有り難うございました。お陰様で明確に理解で き、大変参考になりました。  「グローバル変数はなるべく使わないほうがよい」という示唆があるので、ローカ ル変数のスコープについて、例外として「ブロックだけは外部のスコープのローカル 変数にもアクセスできる。」となっていることから、サブルーチン代わりになると喜 んだところです。  しかし、今変換しているプログラムでは、Proc を def ... endに変更すると、サ ブルーチン内のほとんどの変数をグローバル変数に変えることになり、Perlと同じく 変数前にやたらと$をつける必要があり、見た目が綺麗でないので、あまり好きでな いことや、後々にModuleに変換するときに、やや面倒かなと思い、可能な限りローカ ル変数で済ませて置こうと考えました。  ただし、Moduleにすると、引数を使って、Module間のデータ交換が必要になるの で、計算時間にも悪影響があるのだろうかと素人ながら、気になっています。(本当 はどうなんでしょうか。)  実際に、このModule化とグローバル変数との取り扱いをどうすれば、格好のよいプ ログラムになるのかと思い悩んでいます。  矢幡