Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby language feature of Set[1,2,3]

In Ruby, a set can be initialized by Set[1,2,3] So can an array: Array[1,2,3]

Is it possible to write some code to do the same thing to my own classes? Or it's just a language feature for only a few built-in classes?

like image 710
Chris Xue Avatar asked Dec 15 '22 15:12

Chris Xue


1 Answers

In Ruby, foo[bar, baz] is just syntactic sugar for foo.[](bar, baz). All you need is a method named [].

By the way: you just need to look at the documentation, e.g. for Set:

[](*ary)

Creates a new set containing the given objects.

That's the documentation right there.

Basically, all you need is

class Foo
  def self.[](*args, &block)
    new(*args, &block)
  end
end
like image 160
Jörg W Mittag Avatar answered Jan 07 '23 01:01

Jörg W Mittag