From: ttate@... Date: 1999-03-24T23:47:19+09:00 Subject: [ruby-dev:6490] Re: Set (was BUG report) 立石です。 Date: Wed, 24 Mar 1999 21:50:22 +0900 From: kjana@os.xaxon.ne.jp (YANAGAWA Kazuhisa) kjana> 本題はさておき, 、、、、(^^; kjana> In message <19990324110328Z.ttate@jaist.ac.jp> kjana> ttate@jaist.ac.jp writes: kjana> > def initialize kjana> > @p = Proc.new{|x| kjana> > if( yield(x) == true ) kjana> > true kjana> > else kjana> > false kjana> > end kjana> > } kjana> > end kjana> kjana> def initialize kjana> @p = Proc.new kjana> end kjana> kjana> では何かいけないんでしょうか. いや単にtrueであるものに限りtrueを返すという感じにした かっただけです。(nilとか1,"abc"なんかが返るのを避けるため) 実際にはTypeError,NameErrorもbegin..rescue..endで捕獲 してしまってfalseを返すようにしています。 なぜそうしたのかというと任意のオブジェクトをmember?の引数 にとってきてもエラーとならずfalseを返すようにするためです。 具体的には iset = Set.new{|x| 0 <= x } sset = Set.new{|x| "" <= x } isset = intset + strset isset.member?(1) でエラーをださないための策といったところです。 ;; そこまでする必要性があるかどうかは自分でも疑問の ;; あるところですが、、、、(^^; Takaaki Tateishi