From: matz@... (Yukihiro Matsumoto) Date: 2000-12-25T01:17:46+09:00 Subject: [ruby-talk:8050] Re: Basic hash question Hi, In message "[ruby-talk:8046] Re: Basic hash question" on 00/12/25, Dave Thomas writes: | |I understand that, Guy. But we're not talking underlying |implementation here (because we hope it's transparent to the |user). The difference between strings and other objects wrt. hashes is |that the string (object) is copied when it is inserted in to the hash, |while other objects aren't: |That's a significant user-level difference. Yes. And this is my intension. The reference clearly states the fact: The hash value for the key value is calculated using method Kernel#hash. Since the hash value of the key should not be changed, instances of the classes like Array, Hash, etc. are not suited for the key. When the string used as the key, hash table copies and freeze it and use copied string as the key string. Attempt to Modify the freezed key strings raises an exception. But subclassing problem is another story which should be fixed. matz.