ruby-changes:5275
From: knu <ko1@a...>
Date: Tue, 3 Jun 2008 15:07:46 +0900 (JST)
Subject: [ruby-changes:5275] Ruby:r16774 (ruby_1_8): * lib/set.rb (Set#delete_if, Set#collect!, Set#reject!)
knu 2008-06-03 15:07:33 +0900 (Tue, 03 Jun 2008) New Revision: 16774 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/NEWS branches/ruby_1_8/lib/set.rb Log: * lib/set.rb (Set#delete_if, Set#collect!, Set#reject!) (Set#classify, Set#divide, Set#delete_if): Return an enumerator if no block is given. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=16774&r2=16773&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/set.rb?r1=16774&r2=16773&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/NEWS?r1=16774&r2=16773&diff_format=u Index: ruby_1_8/NEWS =================================================================== --- ruby_1_8/NEWS (revision 16773) +++ ruby_1_8/NEWS (revision 16774) @@ -7,6 +7,10 @@ reference information is supplied with. For a full list of changes with all sufficient information, see the ChangeLog file. +== Changes since the 1.8.7 release + + + == Changes since the 1.8.6 release === Configuration changes Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 16773) +++ ruby_1_8/ChangeLog (revision 16774) @@ -1,3 +1,9 @@ +Tue Jun 3 15:06:33 2008 Akinori MUSHA <knu@i...> + + * lib/set.rb (Set#delete_if, Set#collect!, Set#reject!) + (Set#classify, Set#divide, Set#delete_if): Return an enumerator + if no block is given. + Tue Jun 3 12:51:57 2008 Akinori MUSHA <knu@i...> * enumerator.c (enumerator_allocate, enumerator_ptr): Properly Index: ruby_1_8/lib/set.rb =================================================================== --- ruby_1_8/lib/set.rb (revision 16773) +++ ruby_1_8/lib/set.rb (revision 16774) @@ -234,12 +234,14 @@ # Deletes every element of the set for which block evaluates to # true, and returns self. def delete_if + block_given? or return enum_for(__method__) @hash.delete_if { |o,| yield(o) } self end - # Do collect() destructively. + # Replaces the elements with ones returned by collect(). def collect! + block_given? or return enum_for(__method__) set = self.class.new each { |o| set << yield(o) } replace(set) @@ -249,6 +251,7 @@ # Equivalent to Set#delete_if, but returns nil if no changes were # made. def reject! + block_given? or return enum_for(__method__) n = size delete_if { |o| yield(o) } size == n ? nil : self @@ -346,6 +349,8 @@ # # 2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>, # # 2002=>#<Set: {"f.rb"}>} def classify # :yields: o + block_given? or return enum_for(__method__) + h = {} each { |i| @@ -373,6 +378,8 @@ # # #<Set: {3, 4}>, # # #<Set: {6}>}> def divide(&func) + func or return enum_for(__method__) + if func.arity == 2 require 'tsort' @@ -491,6 +498,7 @@ end def delete_if + block_given? or return enum_for(__method__) n = @hash.size @hash.delete_if { |o,| yield(o) } @keys = nil if @hash.size != n -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/