gpt4 book ai didi

ruby - 有什么方法可以更改 Ruby 中引用的对象吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:20 24 4
gpt4 key购买 nike

我有一些代码使用 ObjectSpace._id2ref 从对象的 ID 获取对象的引用。我想知道是否有任何方法可以更改该引用指向的内容或更改引用某个对象的每个变量,以便引用该对象的所有变量都将具有新值。代码可能如下所示:

a = 5
b = a
def change_ref(id, "hello")
do_stuff()
end

a # => "hello"
b # => "hello"

最佳答案

您可以使用 SimpleDelegator 实现此目的Ruby 标准库自带的类:

require 'delegate'

a = SimpleDelegator.new(5)
b = a
p a # => 5
p b # => 5

a.__setobj__('hello')
p a # => "hello"
p b # => "hello"

几乎肯定有一种方法可以避免这样做,从而使您的代码更简单、更容易理解。我会搜索那个。

关于ruby - 有什么方法可以更改 Ruby 中引用的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com