新しい演算子を導入することで、次のことを実現したいと思います(例:=
)
a := b = {}
b[1] = 2
p a # => {}
p b # => {1=>2}
私が理解している限り、Object
クラスを変更する必要がありますが、必要なものを取得するために何をすべきかわかりません。
require 'superators'
class Object
superator ":=" operand # update, must be: superator ":=" do |operand|
# self = Marshal.load(Marshal.dump(operand)) # ???
end
end
これで私を助けてもらえますか?
アップデート
わかりました、スーパーエーターはおそらくここでは役に立ちませんが、それでもそのようなオペレーターが必要です。モジュールとしてロードできる Ruby の拡張機能を作成するにはどうすればよいですか?
require 'deep_copy_operator'
a !?= b = {} # I would prefer ":=" but don't really care how it is spelled
b[1] = 2
p a # => {}
p b # => {1=>2}