[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]