【发布时间】:2017-02-19 08:22:38
【问题描述】:
我正在实现一个迭代器接口,如果我实现它返回标量(遵循参考 http://php.net/manual/en/class.iterator.php),我收到此错误:
TypeError: Collection::key() 的返回值必须是 标量,返回整数
类实现:
class Collection implements \Iterator
{
public function key(): \scalar
{
return key($this->colecao);
}
// other methods implementations...
}
根据 PHP 参考,整数应被视为标量值 (http://php.net/manual/en/migration70.new-features.php):
标量类型声明有两种形式:强制(默认)和 严格的。现在可以强制执行以下参数类型(无论是 强制或严格):字符串(string),整数(int), 浮点数 (float) 和布尔值 (bool)。
我的代码中是否有错误,你会是一个错误吗?
感谢您的解释!
【问题讨论】:
-
public function key(): int是您所需要的。您必须指定它返回的标量类型。 -
返回类型只能是php.net/manual/en/… 没有听说过的标量这种东西
-
PHP 文档中显示的类型并不是您可以在代码中使用的真实类型,它们只是用于对人类读者进行描述。例如。没有名为
mixed的类型,只是表示该函数可以返回多种类型。 -
@Don'tPanic,感谢您的帮助。我已经将返回类型与 int 放在一起,但没有成功。
标签: php return-type scalar