Project

General

Profile

Bug #11544

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

~~~ruby --- 
 require "set" 

 [2,5,4,3,2,1,3].to_set(Set, 6, 7, 8) #=> ArgumentError 
 ~~~ --- 

 ## Actual [Actual] 
 ~~~ 
 /Users/torifuku/.rbenv/versions/2.2.3/lib/ruby/2.2.0/set.rb:80:in `initialize': wrong number of arguments (4 for 0..1) (ArgumentError) 
	 from /Users/torifuku/.rbenv/versions/2.2.3/lib/ruby/2.2.0/set.rb:691:in `new' 
	 from /Users/torifuku/.rbenv/versions/2.2.3/lib/ruby/2.2.0/set.rb:691:in `to_set' 
	 from report.rb:3:in `<main>' 
 ~~~ 

 ## Expected [Expected] 
 ArgumentError should not occur. 
 Set instance has `1, 1, 2, 3, 4, 5, 6, 7, 8`. 8. 
 Because the below document is written about `*args`. *args. 
 http://ruby-doc.org/stdlib-2.2.3/libdoc/set/rdoc/Enumerable.html 

 ~~~ruby 
 to_set(klass = Set, *args, &block) 
 ~~~ 

 ## Consideration [Consideration] 
 extract from lib/set.rb 

 ~~~ruby 
 --- 
 class Set 
   def initialize(enum = nil, &block) # no *args 
     ... 
   end 
 end 

 module Enumerable 
   def to_set(klass = Set, *args, &block) 
     klass.new(self, *args, &block) 
   end 
 end 
 ~~~ --- 

 I propose this patch. 

Back