我有一个扩展哈希的类,我想跟踪哈希键何时被修改。
覆盖 [key]=
语法方法以完成此操作的正确语法是什么?我想插入我的代码,然后调用父方法。
C 方法可以做到这一点吗?我从文档中看到底层方法是
rb_hash_aset(VALUE hash, VALUE key, VALUE val)
如何将其分配给括号语法?
最佳答案
方法签名为def []=(key, val)
,super
调用父方法。这是一个完整的例子:
class MyHash < Hash
def []=(key,val)
printf("key: %s, val: %s\n", key, val)
super(key,val)
end
end
x = MyHash.new
x['a'] = 'hello'
x['b'] = 'world'
p x
关于ruby - 在子类化 Ruby 散列时如何重写 []= 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989011/