Project

General

Profile

Actions

Feature #8626

open

Add a Set coercion method to the standard lib: Set(possible_set)

Added by saturnflyer (Jim Gay) over 11 years ago. Updated almost 3 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:55952]

Description

=begin
I'd like to be able to take an object that may already be a Set (or not) and ensure that it is one

For example:

set1 = Set.new
set2 = Set(set1)
set3 = Set(nil)
assert set1.equal?(set2)
assert_instance_of(Set, set3)

This is different from the behavior of Set.new in that it will return the same set rather than creating a new one

set1 = Set.new
set2 = Set.new(set1) # <--- completely new object in memory
set2 = Set(set1) # <--- same object from memory

My thoughts about the implementation are simple:

def Set(possible_set)
  possible_set.is_a?(Set) ? possible_set : Set.new(possible_set)
end

I'm not sure if there are edge cases to unexpected behavior that I haven't thought of and I'm wondering if it ought to have a Set.try_convert as well
=end

Updated by saturnflyer (Jim Gay) over 11 years ago

I've created a pull request for MRI here https://github.com/ruby/ruby/pull/359

Actions #3

Updated by hsbt (Hiroshi SHIBATA) almost 3 years ago

  • Project changed from 14 to Ruby master
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0