我想向 Ruby 的 Object 添加一个方法来重新分配与之关联的值。
例如,如果我有两个字符串,我可以在其中一个上调用我的方法,这样指向底层的指针char[]
就会指向另一个的底层char[]
。
a = object_a
b = object_b
a == object_b #=> false
a.my_method(object_b)
a == object_b #=> true
任何人都可以看到实现这一目标的方法吗?
我想向 Ruby 的 Object 添加一个方法来重新分配与之关联的值。
例如,如果我有两个字符串,我可以在其中一个上调用我的方法,这样指向底层的指针char[]
就会指向另一个的底层char[]
。
a = object_a
b = object_b
a == object_b #=> false
a.my_method(object_b)
a == object_b #=> true
任何人都可以看到实现这一目标的方法吗?
你不能改变self
,它总是指向当前对象。但是,您可以围绕对象创建代理。SimpleDelegator
这在标准库中使用 ruby 非常简单:
require 'delegate'
a = SimpleDelegator.new 'foo'
b = 'bar'
a == b # false
a.__setobj__(b)
a == b # true
__setobj__
您可以使用更好的别名,例如:
require 'delegate'
class AwesomeDelegator < SimpleDelegator
alias_method :become, :__setobj__
end
a = AwesomeDelegator.new 'foo'
...
a.become('bar')