お世話になっております。 A.中村です。

On Fri, 21 Jul 2000 12:49:58 +0900
matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

>微妙にイヤというのは、わからなくはないような気がしますが、やっぱりどうイヤなのかちゃんと聞きたい気もします。

Ruby(のやりかた)のせいとはとても言えないような
全世界的(笑)習慣なわけですが、同名の識別子による隠蔽が
自分が今いる場所の名すら隠蔽してしまう事があるってのは
結構用心が要るなぁ、しかも隠蔽が生じるかどうかは
文脈というか順序に依存するわけで、用心用心…です。

>どうあったら嬉しいかというのも聞けるとなお良し、ですね。

ありゃ。
class Zot
  class Zot
  end
  def self::Zot.zot
    p "zot"
  end
end
とは書けないんですね…あるいは
  def self.Zot.zot
とかも。parse errorになっちゃう。

代替として、

class Zot
  class Zot
  end
  z=self::Zot
  def z.zot
    p "zot"
  end
end
Zot::Zot.zot

とは書けますね。


特異メソッド定義って

	def 式 `.' 識別子 [`(' [引数 [`=' default]]...[`,' `*' 引数 ]`)']

ということですが、「識別子」じゃなくて「値」にするのは
おかしいでしょうか?

>また、現時点での私の答えは「わざわざ混乱するようなプログラムを書くのを禁止するつもりはない」です。

オーライ、というのともちょっと違いますが、
それより明らかにマシな方法が(少なくとも俺には)
見当たらないんで、はい。