Array, Hash, Proc などで、 === が以下のように定義されていると
一般的に便利なように思いますが、いかがでしょう。

	class Array
	  def ===(o)
	    include?(o)
	  end
	end

	class Hash
	  def ===(o)
	    key?(o)
	  end
	end

	class Proc
	  def ===(o)
	    call(o)
	  end
	end
	# when proc {|x| x > 0} 等


 既存のコードとの互換性については:

- 今は == と等価なので、これらのインスタンスに対して明示的に
  === を使うことはないのではないか。あるとしても == の誤り?

- case-when で、 Array や Hash を場合分けしたり、 grep で探す
  ことは少なそう。もし無視できない数存在しそうであれば、

	class Array
	  def ===(o)
	    o.is_a? Array ? self == o : include?(o)
	  end
	end

	class Hash
	  def ===(o)
	    o.is_a? Hash ? self == o : key?(o)
	  end
	end

  のようにする手はある。



 あるいは、何か深い理由で定義されていないのでしょうか?

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Somewhere out of a memory.. of lighted streets on quiet nights.."