我是 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語言都會彈出。
uj5u.com熱心網友回復:
在 Ruby 中,每個變數都只是一個實體的指標/參考,沒有其他任何東西。
a = { foo: "Hello" }
b = a[:foo]
b.gsub('e', 'a')
puts a.inspect
# => { foo: "Hallo" }
因此,在您的示例b中沒有分配“Hello”的副本,它實際上是對存盤在哈希中的同一實體的參考。
但是,當您分配給變數時,您正在用其他東西替換存盤在變數中的參考/指標。
你似乎試圖做的是更深一層:你想要一個指向參考的指標(P**我猜是 C 中的一種)。在 Ruby 中,您可以使用任何可以存盤您的值的附加物件來解決這個問題。陣列呢?
a = { foo: [1] }
b = a[:foo]
b[0] = 2
puts a.inspect
# => { foo: [2] }
uj5u.com熱心網友回復:
你不能。
Ruby 中沒有指標,變數只保存一個參考。
https://robertheaton.com/2014/07/22/is-ruby-pass-by-reference-or-pass-by-value/
但是您可以實作自己的方法。可能使用eval()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407153.html
標籤:
