在 Ruby 中,可以通过 Set[1,2,3] 初始化集合,数组也可以: Array[1,2,3]
是否可以编写一些代码来对我自己的类做同样的事情?或者它只是少数内置类的语言特性?
在 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
在 Ruby 中,foo[bar, baz]
只是foo.[](bar, baz)
. 您所需要的只是一个名为[]
.
顺便说一句:您只需要查看文档,例如Set
:
[](*ary)
创建一个包含给定对象的新集合。
那就是那里的文档。
基本上,你只需要
class Foo
def self.[](*args, &block)
new(*args, &block)
end
end
class X
attr_accessor :contents
def self.[](*x)
obj = self.new
obj.contents = x
obj
end
end