From: matz@... (Yukihiro Matsumoto) Date: 2002-06-21T15:24:10+09:00 Subject: [ruby-dev:17531] Re: blocks and local variables まつもと ゆきひろです In message "[ruby-dev:17529] Re: blocks and local variables" on 02/06/21, "K.Kosako" writes: |> 名称衝突を進めていない現状を考えると、むしろ、衝突しているの |> が、意図通りか偶然かを機械的に判別する機会を与えるというのが |> 適切な目標ではないかと。 | |読み間違えているかもしれませんが、 |以下のような方法を考えるようにと、ヒントを与えて頂いたのでしょうか。 まあ、考えるの義務があるは基本的に私ですから、「考えるように」 というというよりは、考える人のための「ひとこと」という程度で しょうか。 |解決できたような気がします。(異論があるかもしれませんが) |----- |1. 記法は<...>を使用する。 | パラメタは全てブロックローカルになる。 | |2. パラメタ以外のローカル変数は、ブロックの中で最初に使用している場所での | 使用方法が、参照であるか代入であるかの二通りに分ける。 | |3-1. 参照の場合は、ブロックローカルではなくなる。 | |3-2. 代入の場合は、デフォルトではブロックローカル。 | <...; a,b>で宣言したときだけブロックローカルでなくなる。 | (どうしても<...; a,b>の記法が気に入らないときには:=を使用する?) ちょっと場合分けが多いのが不安といえば不安ですね。 # 文句ばっかり |3-1のとき、外側でも変数が未定義の場合の処理は、 |もう少し考える必要があるかもしれませんが。 これは今まで通りの処理でしょう。つまり、ゼロ引数のメソッド呼 び出しと解釈します。