Set [1,2,3]的Ruby语言特性

Chr*_*Xue 4 ruby language-features initialization

在Ruby中,可以通过Set [1,2,3]初始化一个集合.所以可以使用数组:Array [1,2,3]

是否可以编写一些代码来对我自己的类做同样的事情?或者它只是少数几个内置类的语言功能?

Zaj*_*ajn 5

是的,因为[][]=只是方法,它们可以被覆盖.

你可以尝试这样的事情:

class MyArray
  attr_accessor :data

  def self.[](*values)
    obj = MyArray.new
    obj.data = values
    return obj
  end
end
Run Code Online (Sandbox Code Playgroud)


Jör*_*tag 5

在Ruby中,foo[bar, baz]只是语法糖foo.[](bar, baz).您只需要一个名为的方法[].

顺便说一句:您只需要查看文档,例如Set:

[](*ary)

创建包含给定对象的新集合.

那是那里的文件.

基本上,你需要的只是

class Foo
  def self.[](*args, &block)
    new(*args, &block)
  end
end
Run Code Online (Sandbox Code Playgroud)