Si je crée deux instances String avec le même contenu séparément, elles sont identiques. Ce n'est pas le cas avec les classes personnalisées par défaut (voir l'exemple ci-dessous).Unicité des instances Ruby
Si j'ai ma propre classe (Test
ci-dessous) et j'ai une variable (@v
ci-dessous) qui est unique, c'est à dire. deux instances Test
avec le même @v
doivent être traitées comme identiques, alors comment pourrais-je dire à Ruby que c'est le cas?
Considérons cet exemple:
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}
Deux instances de chaîne avec le même contenu ne sont pas identiques. '" string ".equal? (" string ")' retourne 'false' –
Ahh, mon erreur. J'ai supposé qu'ils étaient parce que 'a = {'chaîne' => 'une chaîne'}; a.delete ('string') 'fonctionne! –
@JP: Je pense que les hachages ont un cas particulier s'ils utilisent une chaîne comme clé. –