[#40498] autoload SYMBOL, XX.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
8 messages
2005/01/08
[#40501] getopt — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
6 messages
2005/01/08
[#40519] What is singletonclass.superclass ? — sheepman <sheepman@...>
こんにちは、sheepman です。
6 messages
2005/01/11
[#40523] Re: アクセス情報の取得について — yuushi44@...
酒匂様、神戸様
4 messages
2005/01/12
[#40546] Net::IMAPの中のinlenって何ですか? — 内木場 美次 <uchikoba@...>
はじめまして。Rubyを始めて2ヶ月ちょっとの
6 messages
2005/01/20
[#40551] Net::IMAPで既に存在するディレクトリが削除できない — 内木場 美次 <uchikoba@...>
お疲れ様です。内木場です。
13 messages
2005/01/21
[#40571] dupとfrozen — Chikara Takamatsu <c_takamatu@...>
始めまして。高松と申します。
5 messages
2005/01/25
[#40580] enum 定数する場合のイディオム — Hiroshi Takagi <gollum@...>
高木@関西のネットワーク屋%Ruby novice monk です。
12 messages
2005/01/27
[ruby-list:40527] Re: procの動作について(質問)
From:
Keisuke CHIBA <chiba@...>
Date:
2005-01-13 08:10:03 UTC
List:
ruby-list #40527
ちばと申します。
> #====(A)========
> pr=proc{ a=2 }
> begin
> a=1
> pr.call
> end
> pr2=proc{ p a }
> pr2.call #=>1
> #====(B)=========
> a=1
> pr=proc{ a=3 }
> pr.call
> pr2=proc{ p a }
> pr2.call #=>3
Ruby ではローカル変数のスコープは「宣言した位置からその変数
が宣言されたブロック、メソッド定義、またはクラス/モジュール
定義 の終りまで」だそうです。
したがって、(A)の場合、最初に 2 を代入された a のスコープは
代入された場所からそのブロックの終わりまでで、1 を代入された
a のスコープはそこからスクリプトの終わりまです。つまり最初の
Procで代入された a と2番目の Proc で代入された a は別のもの
になります。
(B)の場合は 1 を代入された a のスコープがそこからスクリプト
の終わりまで続きます。この場合は出てくる変数 a はすべて同じ
スコープに属します。
Basic から移植するのであれば、Proc より def ... end を使い、
サブルーチン内ローカルでない変数はすべてグローバルにしたほう
がよいのではないかと思うのですがいかがしょうか。たとえばこん
な風に。
def pr
$a=2
end
def pr2
p $a
end
begin
$a=1
pr
end
pr2 #=>2
千葉 敬介 <chiba@raia-inc.jp>