我想创建一个class MyList
,我可以使用Array
语法进行初始化,例如:
ml = MyList.new [1, 2, 3]
我可以通过实现函数self.[]
来实现它,如下面的摘录:
class MyList
def self.[] *array
self.new array
end
def initialize enum = nil, &block
# ....
end
end
如何实现class MyHash
,初始化为
mh = MyHash.new { 1 => 1, 2 => 2}
# mh = { 1 => 1, 2 => 2} # post edit: old version, that caused confusion on this question.
我的课程中是否有一种方法,以及如何实现?如果没有,{ a =>b }
符号有什么特别之处?
重复后标记解释 - 问题没有得到很好说明,但我的意图并未重复。事实上,就像我一样
ml = MyList.new [1, 2, 3]
我的意思是:
mh = MyHash.new { 1 => 1, 2 => 2}
已经回答过自己,这可能是不可能的,因为Ruby会混淆一个被参数传递的块,但我可以
mh = MyHash.new ({ 1 => 1, 2 => 2})
定义:
class MyHash
def initialize hash
# ....
end
end