compact 我可以或者應該通過ruby中的object_id屬性找到一個對象嗎?



ruby delete_if (1)

是的你可以:

irb(main):002:0> s1 = "foo"
#=> "foo"
irb(main):003:0> s2 = ObjectSpace._id2ref(s1.object_id)
#=> "foo"
irb(main):004:0> s2.object_id == s1.object_id
#=> true
irb(main):005:0> s2[0] = "z"
#=> "z"
irb(main):006:0> s1
#=> "zoo"

你應該這樣做嗎? 我會把它留給你。 存在具有可序列化id的對象的較少令人討厭的方式(例如,在Array中並返回索引)。 您可能遇到的一個問題是,如果您保留給對象的唯一“引用”是object_id ,那麼當您不查看時,GC可以收集該對象。

當我製作一個新物體時,讓我們說吧

o = Object.new

這個對像有一個id,

o.object_id 
#=> ########

我還使用Object類創建了其他幾個對象。 使用object_id屬性讓ruby找到對象'o'的最佳方法是什麼? 我在想類似的東西

search_id = o.object_id
search_result = Object.find(search_id)

其中'search_results'將是與'search_id'對應的對象。 此外,我肯定會欣賞一種完全不同的方法來索引對象並通過guid或其他東西檢索它們。 非常感謝!

嗯,我想我真的只需要在數據庫的上下文中考慮這個問題,只需使用MySQL查詢或我選擇查找對象的數據庫。 我想的越多,通過這個想像中的'find()'方法可以訪問的唯一可能的東西是新創建或“活躍”的東西? 很抱歉讓這個問題變得糟透了。





find