From: gotoken@... (GOTO Kentaro) Date: 1999-02-16T13:50:15+09:00 Subject: [ruby-list:12103] Re: !=~ ごとけんです In message "[ruby-list:12102] Re: !=~" on 99/02/16, ttate@jaist.ac.jp writes: >立石です。 >gotoken> ちなみに !op が関係演算子 op の否定なら !< とか !<= の >gotoken> ほうが欲しいでーす. !(a < b) と書かねばならんのは悲しい. > >!(a < b) >は >a >= b >と同じだから必要ないかと思っているのですが、、、 僕のまわりにはそうでないものも,うじゃうじゃいる模様. class Set def initialize(*x) @elem = x.uniq end attr_reader :elem def < (other) return true if (@elem - other.elem).empty? return false end def == (other) return true if other.elem == @elem return false end def > (other) return other < self end def >= (other) return (self > other || self == other) end def <= (other) return (self < other || self == other) end def <=> (other) return -1 if self < other return 0 if self == other return 1 if self > other return false end def to_s '{' + @elem.join(',') + '}' end alias inspect to_s alias to_str to_s end # 実行例 a = Set.new(1,2) ==> {1,2} b = Set.new(1,3) ==> {1,3} a == b ==> false a < b ==> false a <= b ==> false a > b ==> false a >= b ==> false a != b ==> true b = Set.new(1,2,3) ==> {1,2,3} a == b ==> false a < b ==> true a <= b ==> true a > b ==> false a >= b ==> false a != b ==> true てなのとか,もっと変なのとか. # <=> が false を返すから Compareble じゃないのですね.はぅン -- gotoken