Chr*_*Xue 4 ruby language-features initialization
在Ruby中,可以通过Set [1,2,3]初始化一个集合.所以可以使用数组:Array [1,2,3]
是否可以编写一些代码来对我自己的类做同样的事情?或者它只是少数几个内置类的语言功能?
是的,因为[]和[]=只是方法,它们可以被覆盖.
你可以尝试这样的事情:
class MyArray
attr_accessor :data
def self.[](*values)
obj = MyArray.new
obj.data = values
return obj
end
end
Run Code Online (Sandbox Code Playgroud)
在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)