福嶋です。 gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote: > def initialize(argtype, *args) > case argtype > when :TYPE1 > ... > when :TYPE2 > ... > else > ... > end > end > end 引数のクラスに応じて処理を選ぶだけなら、以下のようにすればよいか も、と思いましたが出来ませんでした。 class Foo def initialize(*args) case args when [Integer] ... when [Integer, Integer] ... when [Integer, String] ... else ... end end end Array#=== は Array#== と同じなんですね。 Array#=== が要素間の===なら出来るんですが。 class Array def ===(other) return false unless other.is_a? Array return false if self.size != other.size for i in 0...size return false unless self[i] === other[i] end true end end 以前に Array#=== の意味が include? から変更された時、要素間の=== ではなく、要素間の==が選ばれたのは何故なんでしょう? ---- 福嶋正機