集合[1,2,3]的Ruby语言特性
在Ruby中,集合可以由集合[1,2,3]初始化 数组也是如此:数组[1,2,3] 是否可以编写一些代码来对我自己的类执行相同的操作?集合[1,2,3]的Ruby语言特性,ruby,initialization,language-features,Ruby,Initialization,Language Features,在Ruby中,集合可以由集合[1,2,3]初始化 数组也是如此:数组[1,2,3] 是否可以编写一些代码来对我自己的类执行相同的操作? 或者它只是一些内置类的语言特性?是的,因为[]和[]=只是方法,它们可以被重写 class X attr_accessor :contents def self.[](*x) obj = self.new obj.contents = x obj end end 您可以尝试以下方法: class MyArray att
或者它只是一些内置类的语言特性?是的,因为
[]
和[]=
只是方法,它们可以被重写
class X
attr_accessor :contents
def self.[](*x)
obj = self.new
obj.contents = x
obj
end
end
您可以尝试以下方法:
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)
的语法糖。您只需要一个名为[]
的方法
顺便说一下:您只需要查看文档,例如:
[](*ary)
创建包含给定对象的新集合
这就是文件
基本上,你所需要的就是
class Foo
def self.[](*args, &block)
new(*args, &block)
end
end
作为旁注,
Array[1,2,3]
将调用Array.[]
,但是Array[1,2,3]
(在y
后面有空格)将调用内核#数组
。Avdi Grimm将内核#数组
等方法描述为中的“转换函数”。