我想通过一行表达式初始化几个自动激活的哈希。到目前为止,我为该AutoHash
对象找到了一个额外的方法:
class AutoHash < Hash
...
def few(n=0)
Array.new(n) { AutoHash.new }
end
这使我可以执行以下操作
a, b, c = AutoHash.new.few 3
但是,我觉得可以通过定义一个新的运算符来使下面的句子成为可能:=
a := b := c = AutoHash.new
你能帮我实现这个吗?
我必须使用superators吗?
require 'superators'
class AutoHash < Hash
...
superator ":=" do |operand|
if operand.kind_of? Hash
...
else
...
end
end
更新:现在我看到需要在类之外定义运算符。是否可以定义这样的对象克隆运算符?
Update2更清晰的方法定义few
,感谢 Joshua
参考