.hash字符串方法如何工作?

我只是ruby的新手。 我见过一个字符串方法(String).hash。

例如,在irb ,我尝试过

 >> "mgpyone".hash 

回报

 => 144611910 

这个方法有什么用?

hash方法是为所有对象定义的。 见文档 :

为此对象生成Fixnum哈希值。 此函数必须具有a.eql?(b)暗示a.hash == b.hash 。 散列值由Hash类使用。 任何超出Fixnum容量的哈希值在被使用之前都将被截断。

所以String.hash方法是在C-Code中定义的。 基本上(过度简化)它只是总结了该字符串中的字符。