Ds\Hashable::hash
(PECL ds >= 1.0.0)
Ds\Hashable::hash — Returns a scalar value to be used as a hash value.
描述
abstract public mixed Ds\Hashable::hash ( void )
返回要用作对象散列值的标量值。
尽管哈希值没有定义相等性,但根据Ds \ Hashable :: equals()相等的所有对象都必须具有相同的哈希值。相同对象的哈希值不必是唯一的,例如,您可以返回TRUE
所有对象并且没有任何内容会被破坏 - 唯一的含义是哈希表会变成链接列表,因为所有对象都将哈希到相同桶。因此,选择一个好的散列值非常重要,例如ID或电子邮件地址。
此方法允许将对象用作Ds\Map和Ds\Set等结构中的键,或者其他任何查找此界面的结构。
警告
不要选择可能在对象内更改的值,例如公共属性。散列表查找将失败,因为散列已更改。
警告
所有相同的对象必须具有相同的散列值。
参数
该功能没有参数。
返回值
要用作此对象的哈希值的标量值。
例子
示例#1 Ds \ Hashable :: hash()示例
<?php
class?HashableObject?implements?\Ds\Hashable
{
????private?$name;
????private?$email;
????public?function?__construct($name,?$email)
????{
????????$this->name??=?$name;
????????$this->email?=?$email;
????}
????/**
?????*?Should?return?the?same?value?for?all?equal?objects,?but?doesn't?have?to
?????*?be?unique.?This?value?will?not?be?used?to?determine?equality.
?????*/
????public?function?hash()
????{
????????return?$this->email;
????}
????/**
?????*?This?determines?equality,?usually?during?a?hash?table?lookup?to?determine
?????*?if?the?bucket's?key?matches?the?lookup?key.?The?hash?has?to?be?equal?if
?????*?the?objects?are?equal,?otherwise?this?determination?wouldn't?be?reached.
?????*/
????public?function?equals($obj):?bool
????{
????????return?$this->name??===?$obj->name
????????????&&?$this->email?===?$obj->email;
????}
}
?>
← Ds\Hashable::equals
Sequence →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com