summaryrefslogtreecommitdiff
path: root/lib/set.rb
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-23 02:58:46 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-23 02:58:46 +0000
commite7f65f6ba796c5c88fd180193d0572ed02d4410e (patch)
tree19c7f15f80650860efd4e144dbff7831cd9e6c16 /lib/set.rb
parent67acbe3954a49278f7c92f4e62f9b6827839dfac (diff)
* lib/set.rb (Set#each, SortedSet#each, TC_Set#test_each): Return
an enumerator if no block is given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/set.rb')
-rw-r--r--lib/set.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/set.rb b/lib/set.rb
index 3b30db0..b925f8e 100644
--- a/lib/set.rb
+++ b/lib/set.rb
@@ -2,7 +2,7 @@
#--
# set.rb - defines the Set class
#++
-# Copyright (c) 2002 Akinori MUSHA <knu@iDaemons.org>
+# Copyright (c) 2002-2008 Akinori MUSHA <knu@iDaemons.org>
#
# Documentation by Akinori MUSHA and Gavin Sinclair.
#
@@ -204,8 +204,10 @@ class Set
end
# Calls the given block once for each element in the set, passing
- # the element as parameter.
+ # the element as parameter. Returns an enumerator if no block is
+ # given.
def each
+ block_given? or return enum_for(__method__)
@hash.each_key { |o| yield(o) }
self
end
@@ -511,6 +513,7 @@ class SortedSet < Set
end
def each
+ block_given? or return enum_for(__method__)
to_a.each { |o| yield(o) }
end
@@ -925,9 +928,8 @@ class TC_Set < Test::Unit::TestCase
ary = [1,3,5,7,10,20]
set = Set.new(ary)
- assert_raises(LocalJumpError) {
- set.each
- }
+ e = set.each
+ assert_instance_of(Enumerable::Enumerator, e)
assert_nothing_raised {
set.each { |o|