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/