一个非常常见的类型是Symbol,你没有提到它。但实际上它可以是任何对象。class Foo; end f1, f2 = Foo.new, Foo.new h = { f1 => 3, f2 => 4 } h # => {#<Foo:0x007fed4b04bb00>=>3, #<Foo:0x007fed4b04bad8>=>4} h[f1] # => 3 h[f2] # => 4