当使用 Hashable 对象作为 $key 时,Map::put() 不会在 key 上调用 Hashable::hash(),直到稍后。例如
<?
class Key implements \Ds\Hashable
{
protected $id;
public function __construct($id)
{
$this->id = $id;
}
public function equals($obj) : bool
{
return $this->id == $obj->id;
}
public function hash()
{
return $this->id;
}
}
$map = new \Ds\Map();
$myki = new Key('myki');
$map->put($myki, "Value String");
var_dump($map->get($myki));
echo 'Map::put() 存储 Hashable 对象,它在 toArray() 中导致错误'. PHP_EOL;
var_dump($map->toArray());
?>