簡體   English   中英

如何將指針分配給 Ruby 中的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM