diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-03 06:07:33 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-03 06:07:33 +0000 |
commit | 927b88eb8bc765a878bc05bfa43d84b672c808e4 (patch) | |
tree | 186c3017df211bd30436436f9fd7b67e7fd3ffab /lib/set.rb | |
parent | b5af8dbe1754e722096decc64afc4416ee485587 (diff) |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/set.rb')
-rw-r--r-- | lib/set.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/set.rb b/lib/set.rb index 1d7232dd6c..b61f3b7857 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -234,12 +234,14 @@ class Set # 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 @@ class Set # 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 @@ class Set # # 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 @@ class Set # # #<Set: {3, 4}>, # # #<Set: {6}>}> def divide(&func) + func or return enum_for(__method__) + if func.arity == 2 require 'tsort' @@ -491,6 +498,7 @@ class SortedSet < Set 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 |