如果我分別創建兩個具有相同內容的String實例,它們是相同的。默認情況下,自定義類不是這種情況(請參見下面的示例)。Ruby實例的唯一性
如果我有我自己的課程(Test
下面),我有一個變量(@v
下面),這是唯一的,即。兩個Test
具有相同@v
的實例應該被視爲相同,那麼我將如何去告訴Ruby這種情況?
考慮這個例子:
class Test
def initialize(v)
@v = v
end
end
a = {Test.new('a') => 1, Test.new('b') => 2}
a.delete(Test.new('a'))
p a
# # Desired output:
# => {#<Test:0x100124ef8 @v="b">=>2}
具有相同內容的兩個字符串實例不相同。 '「string」.equal?(「string」)'returns' false' – 2010-07-14 23:22:55
啊,我的錯。我認爲他們是因爲'a = {'string'=>'一個字符串'}; a.delete('string')'起作用! – 2010-07-15 01:46:02
@JP:我認爲散列有一個特殊情況,如果他們使用字符串作爲關鍵。 – 2010-07-15 01:55:23