无效为 return 类型
Void as return type
我正在用 PHP 测试 return 类型 7.
我创建了一个简单的脚本来测试 return 类型的 PHP 7:
<?php
Class Obj {
public function __construct(){
}
public function test(): string { //a string needs to be returned
return "ok";
}
}
function foo(): Obj { //instance of Obj needs to be returned
return new Obj();
}
$o = foo();
echo $o->test(); // output: ok
现在在其他编程语言中,当您指定 return 类型 void
时,这意味着您不能 return 任何内容,否则您会收到错误消息。所以我写了这个脚本:
<?php
function foo(): void {
}
foo();
现在在上面的脚本中,预期的输出是空的。
相反,它给了我一个致命错误:
Fatal error: Return value of foo() must be an instance of void, none returned on line 2
我的问题是(没找到),在PHP 7中会不会有类似的void
类型?
php 中没有 void 的等效类型,
return 空;可能符合您的要求,因为它没有任何类型,如 0 或任何其他值。注:实际void表示没有return.
编辑:
针对 void return type 的新的单独 RFC 已发布,已通过投票,并在 PHP 7.1 中实施。
PHP 中现在有一个 void
return 类型。 :)
原文Post:
取自wiki.php.net:
Future Work
Ideas for future work which are out of the scope of this RFC include:
- Allow functions to declare that they do not return anything at all (void in Java and C)
因此目前无法声明您没有return任何东西。
我不知道在你的情况下什么是最好的,但我可能暂时不声明 return 类型。
要回答您的问题是否会有 void
return 输入 PHP 7:
目前还没有保证,但我认为很可能void
或同义词会以某种方式实现。
编辑:在 PHP 7.1 中有一个 void
伪类型。它在 Void Return Type RFC 中定义。以下是 7.1 之前的答案。
return 的作者在此处键入 RFC。在 PHP 7.0 中不会有 void
return 类型,因为 the RFC 没有添加它,也没有任何其他针对 PHP 7.0.[=24 的 RFC =]
类型 void
可以存在于 PHP 7 系列中,如果我们决定为次要版本添加新的 key/reserved 词是可以的,即使它们会破坏代码。这有点不确定,但它是在 PHP 5.4 中使用 callable
关键字完成的。
就我个人而言,我认为我们不需要void
;我们已经 null
。 From the manual:
The special NULL value represents a variable with no value. NULL is the only possible value of type null.
在 PHP 中,不 return 任何内容的函数将隐式 return null
。这意味着你不可能实际上 return什么都没有*。采用 null
路线意味着自 null
will not be a valid class/interface/trait name starting in PHP 7.0 以来没有向后兼容性中断,并且不添加任何新密钥或保留字。
*熟悉 Zend Engine 的人会意识到你可以 return 什么都不做,但是如果你什么都不做 return 你正在分配的变量将被分配 null,这使它们在逻辑上等价。
void
return 类型已被 php 7.1 接受。所以以后会来的。
有关其工作原理的一些示例:
function should_return_nothing(): void {
return 1; // Fatal error: A void function must not return a value
}
function returns_null(): void {
return null; // Fatal error: A void function must not return a value
}
function lacks_return(): void {
// valid
}
function returns_nothing(): void {
return; // valid
}
有关详细信息,请参阅 RFC from Andrea Faulds!
@BeNice 我理解你的意思,无论如何我总结了来自
Levi Morrison 作为可持续性的一个实际问题:引入 void
作为可能的 return 类型 事实上,我们打破了 null
唯一可能的类型是 null
的假设。
这样,void
应该 return 用于 null
的类型检查,通过设计更改体系结构约束并导致向后兼容性混乱。
// your choice implies this comparison should be true:
gettype(null) === void;
我认为在他的代码中不经常使用 null
的人会承担 void
类型的实现。
我正在用 PHP 测试 return 类型 7.
我创建了一个简单的脚本来测试 return 类型的 PHP 7:
<?php
Class Obj {
public function __construct(){
}
public function test(): string { //a string needs to be returned
return "ok";
}
}
function foo(): Obj { //instance of Obj needs to be returned
return new Obj();
}
$o = foo();
echo $o->test(); // output: ok
现在在其他编程语言中,当您指定 return 类型 void
时,这意味着您不能 return 任何内容,否则您会收到错误消息。所以我写了这个脚本:
<?php
function foo(): void {
}
foo();
现在在上面的脚本中,预期的输出是空的。 相反,它给了我一个致命错误:
Fatal error: Return value of foo() must be an instance of void, none returned on line 2
我的问题是(没找到),在PHP 7中会不会有类似的void
类型?
php 中没有 void 的等效类型, return 空;可能符合您的要求,因为它没有任何类型,如 0 或任何其他值。注:实际void表示没有return.
编辑:
针对 void return type 的新的单独 RFC 已发布,已通过投票,并在 PHP 7.1 中实施。
PHP 中现在有一个 void
return 类型。 :)
原文Post:
取自wiki.php.net:
Future Work
Ideas for future work which are out of the scope of this RFC include:
- Allow functions to declare that they do not return anything at all (void in Java and C)
因此目前无法声明您没有return任何东西。
我不知道在你的情况下什么是最好的,但我可能暂时不声明 return 类型。
要回答您的问题是否会有 void
return 输入 PHP 7:
目前还没有保证,但我认为很可能void
或同义词会以某种方式实现。
编辑:在 PHP 7.1 中有一个 void
伪类型。它在 Void Return Type RFC 中定义。以下是 7.1 之前的答案。
return 的作者在此处键入 RFC。在 PHP 7.0 中不会有 void
return 类型,因为 the RFC 没有添加它,也没有任何其他针对 PHP 7.0.[=24 的 RFC =]
类型 void
可以存在于 PHP 7 系列中,如果我们决定为次要版本添加新的 key/reserved 词是可以的,即使它们会破坏代码。这有点不确定,但它是在 PHP 5.4 中使用 callable
关键字完成的。
就我个人而言,我认为我们不需要void
;我们已经 null
。 From the manual:
The special NULL value represents a variable with no value. NULL is the only possible value of type null.
在 PHP 中,不 return 任何内容的函数将隐式 return null
。这意味着你不可能实际上 return什么都没有*。采用 null
路线意味着自 null
will not be a valid class/interface/trait name starting in PHP 7.0 以来没有向后兼容性中断,并且不添加任何新密钥或保留字。
*熟悉 Zend Engine 的人会意识到你可以 return 什么都不做,但是如果你什么都不做 return 你正在分配的变量将被分配 null,这使它们在逻辑上等价。
void
return 类型已被 php 7.1 接受。所以以后会来的。
有关其工作原理的一些示例:
function should_return_nothing(): void {
return 1; // Fatal error: A void function must not return a value
}
function returns_null(): void {
return null; // Fatal error: A void function must not return a value
}
function lacks_return(): void {
// valid
}
function returns_nothing(): void {
return; // valid
}
有关详细信息,请参阅 RFC from Andrea Faulds!
@BeNice 我理解你的意思,无论如何我总结了来自
Levi Morrison 作为可持续性的一个实际问题:引入 void
作为可能的 return 类型 事实上,我们打破了 null
唯一可能的类型是 null
的假设。
这样,void
应该 return 用于 null
的类型检查,通过设计更改体系结构约束并导致向后兼容性混乱。
// your choice implies this comparison should be true:
gettype(null) === void;
我认为在他的代码中不经常使用 null
的人会承担 void
类型的实现。