Ds\Hashable::hash

(PECL ds >= 1.0.0)

Ds\Hashable::hash返回一个标量值作为哈希值

描述

abstract public Ds\Hashable::hash(): mixed

返回一个标量值作为对象的哈希值。

虽然哈希值不定义相等性,但所有根据 Ds\Hashable::equals() 相等的都必须具有相同的哈希值。相等对象的哈希值不必是唯一的,例如,您可以对所有对象都返回 **true**,并且不会出现任何问题 - 唯一的含义是哈希表将变成链表,因为所有对象都将被哈希到相同的桶中。因此,选择一个好的哈希值非常重要,例如 ID 或电子邮件地址。

此方法允许将对象用作 Ds\MapDs\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;
}

/**
* 对于所有相等的都应返回相同的值,但不一定是唯一的。此值不会用于确定相等性。
*/
public function hash()
{
return
$this->email;
}

/**
* 这决定了相等性,通常在哈希表查找期间用于确定桶的键是否匹配查找键。如果对象相等,则哈希必须相等,否则将无法达到此确定。
*/
public function equals($obj): bool
{
return
$this->name === $obj->name
&& $this->email === $obj->email;
}
}
?>
添加笔记

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top