Project

General

Profile

Actions

Bug #2702

closed

Enumerator#to_a and #to_set yield inconsistent results

Added by sylvain.joyeux (Sylvain Joyeux) over 14 years ago. Updated about 13 years ago.

Status:
Closed
Assignee:
-
ruby -v:
ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux]
[ruby-core:27985]

Description

=begin
If I run #to_a and #to_set on an Enumerator with a multiple-argument yield, then I get the following:

[~]% cat test_to_set.rb
require 'set'

def enumerate
yield(1, 2, 3)
yield(4, 5, 6)
end

STDERR.puts enum_for(:enumerate).class
STDERR.puts enum_for(:enumerate).to_a.inspect
STDERR.puts enum_for(:enumerate).to_set.inspect

[~]% ruby1.9.1 test_to_set.rb
Enumerator
[[1, 2, 3], [4, 5, 6]]
#<Set: {1, 4}>

Namely, #to_a captures all the arguments provided to yield() while #to_set only gets the first one.

I guess that the #to_set behaviour is a bug (isn't it ?)
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0