mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Define Set#to_set so that aSet.to_set returns self.
* lib/set.rb (Set#to_set): Define Set#to_set so that aSet.to_set returns self. [Fixes GH-359] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
74201103a9
commit
ad78cf4ea8
4 changed files with 22 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
Fri Jul 19 11:16:54 2013 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* lib/set.rb (Set#to_set): Define Set#to_set so that aSet.to_set
|
||||
returns self. [Fixes GH-359]
|
||||
|
||||
Fri Jul 19 11:10:23 2013 Zachary Scott <e@zzak.io>
|
||||
|
||||
* lib/rake/*: [DOC] Capitalize "Ruby" in documentation
|
||||
|
|
4
NEWS
4
NEWS
|
@ -137,6 +137,10 @@ with all sufficient information, see the ChangeLog file.
|
|||
|
||||
=== Stdlib compatibility issues (excluding feature bug fixes)
|
||||
|
||||
* Set
|
||||
* incompatible changes:
|
||||
* Set#to_set now returns self instead of generating a copy.
|
||||
|
||||
* URI
|
||||
* incompatible changes:
|
||||
* URI.decode_www_form follows current WHATWG URL Standard.
|
||||
|
|
10
lib/set.rb
10
lib/set.rb
|
@ -148,6 +148,16 @@ class Set
|
|||
@hash.keys
|
||||
end
|
||||
|
||||
# Returns self if no arguments are given. Otherwise, converts the
|
||||
# set to another with klass.new(self, *args, &block).
|
||||
#
|
||||
# In subclasses, returns klass.new(self, *args, &block) unless
|
||||
# overridden.
|
||||
def to_set(klass = Set, *args, &block)
|
||||
return self if instance_of?(Set) && klass == Set && block.nil? && args.empty?
|
||||
klass.new(self, *args, &block)
|
||||
end
|
||||
|
||||
def flatten_merge(set, seen = Set.new) # :nodoc:
|
||||
set.each { |e|
|
||||
if e.is_a?(Set)
|
||||
|
|
|
@ -625,6 +625,9 @@ class TC_Enumerable < Test::Unit::TestCase
|
|||
assert_instance_of(Set, set)
|
||||
assert_equal([-10,-8,-6,-4,-2], set.sort)
|
||||
|
||||
assert_same set, set.to_set
|
||||
assert_not_same set, set.to_set { |o| o }
|
||||
|
||||
set = ary.to_set(SortedSet)
|
||||
assert_instance_of(SortedSet, set)
|
||||
assert_equal([1,2,3,4,5], set.to_a)
|
||||
|
|
Loading…
Reference in a new issue