On Thu, 13 Feb 2003, James F.Hranicky wrote: > For times when we care about the uniqueness or compactness of the elements > of the array, we could have > > uniq? > compact? I like this... > > if you plan on doing more than just calling uniq! or compact! anyway. > > Other ideas: > > - change ! methods to always return the receiver, create new methods > that have the current ! functionality: This would break existing code possibly. I wonder about using an optional parameter to return status information, instead of having to "overload" the method's result .... Script started on Thu Feb 13 16:43:44 2003 neelix hgs 11 %> cat test_new_uniq.rb #!/usr/local/bin/ruby -w class BoolStatus def initialize(bool) @value = bool end def true @value = true end def false @value = false end def true? @value == true ? true : false end def false? @value == false ? true : false end def to_s @value.to_s end end class Array alias old_uniq! uniq! def uniq!(modified=nil) if old_uniq!.nil? if modified.nil? return nil # same as now else modified.false end else unless modified.nil? modified.true end end return self end end u = [1,2,3,4,5] v = [1,2,3,4,5] x = [1,2,2,3,3,4,4,5] y = [1,2,2,3,3,4,4,5] z = BoolStatus.new(false) puts u.uniq!.inspect puts v.uniq!(z).inspect puts z.inspect puts x.uniq!.inspect puts y.uniq!(z).inspect puts z.inspect neelix hgs 12 %> ./test_new_uniq/.rb nil [1, 2, 3, 4, 5] #<BoolStatus:0xe8f98 @value=false> [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] #<BoolStatus:0xe8f98 @value=true> neelix hgs 13 %> exit neelix hgs 14 %> script done on Thu Feb 13 16:44:05 2003 Having the extra parameter to determine behaviour desn't break existing code, I think. > ---------------------------------------------------------------------- > | Jim Hranicky, Senior SysAdmin UF/CISE Department | > Hugh >