[英]How to assign a pointer to a variable in Ruby
我是 Ruby 的新手,只是想知道是否可以將哈希鍵的引用分配給變量?
a = {
foo: 1
}
b = a[:foo] // I don't want assign the value
b = 2
puts a
有沒有辦法分配引用,而不是分配值? 只是我不想繼續寫a[:foo]
,而是每當b
發生變化時,我想將其反映在a[:foo]
上。 也許是一個簡單地替換文本的宏,無論我在哪里寫ACCESS_FOO
,它都會替換為a[:foo]
。
如果之前有人問過這個問題,我很抱歉。 任何時候我搜索指針C
語言都會彈出。
在 Ruby 中,每個變量都只是一個指向實例的指針/引用,沒有其他任何東西。
所以當你這樣做時
a = { foo: "Hello" }
b = a[:foo]
b.gsub('e', 'a')
puts a.inspect
# => { foo: "Hallo" }
因此,在您的示例中, b
沒有分配“Hello”的副本,它實際上是對存儲在 hash 中的同一實例的引用。
但是,當您分配給變量時,您正在用其他東西替換存儲在變量中的引用/指針。
您似乎嘗試做的是 go 更深一層:您想要一個指向引用的指針(我猜是 C 中的P**
)。 在 Ruby 中,您可以使用任何可以存儲您價值的附加 object 來解決此問題。 數組呢?
a = { foo: [1] }
b = a[:foo]
b[0] = 2
puts a.inspect
# => { foo: [2] }
你不能。
Ruby 中沒有指針,變量只持有一個引用。
https://robertheaton.com/2014/07/22/is-ruby-pass-by-reference-or-pass-by-value/
但是您可以實現自己的方法。 可能使用eval()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.