之间是否存在差异:
function someMethod( $someArg ) {
// some code
return;
}
和
function someMethod( $someArg ) {
// some code
// no return
}
两者都有NULL
作为'返回值'。有区别吗? PHP内部的东西?性能?速度ω
修改
我问,因为在Zend框架中(in this video)他们使用return;
对我来说似乎(似乎)愚蠢。但是,你会认为Zend框架背后的人确实知道他们的PHP ......
答案 0 :(得分:39)
php code
<?php
function a() {
echo 1;
return;
}
function b() {
echo 2;
}
生成字节码
.FUNCTION a
ECHO 1
RETURN NULL
RETURN NULL
HANDLE_EXCEPTION
.END FUNCTION
.FUNCTION b
ECHO 2
RETURN NULL
HANDLE_EXCEPTION
.END FUNCTION
所以显式return语句会生成一条额外的RETURN指令。否则没有区别。
答案 1 :(得分:11)
据我所知,没有区别。
空return;
主要是从if / else,while或for循环中突破而不返回任何内容。
答案 2 :(得分:4)
在功能上没有区别但是在函数中有一个明显的退出点(返回)总是很好的。一些计算机科学学院认为所有的功能和方法应该只有1个,只有1个出口点。
如果你需要在将来添加一个返回值,那么如果你包含一个空的返回,那么代码中已经有一个明显的点已经被你选中了。
但就像我说的那样,从功能的角度来看,没有太大区别。
答案 3 :(得分:3)
在你的例子中,没有区别。
但是,return
将终止该函数,因此您可以选择在return
语句之后跳过代码(这是其目的)。
在您的示例中,如果您想要查看return
,则为个人偏好。
此外,在某些语言(如Perl)中,最后一个表达式是“隐式”返回值,因此您甚至不需要使用“return”。 (但这不适用于其他语言,如C ++。)
sub foo {
return 12;
}
sub foo2 {
12; # same thing
}
答案 4 :(得分:1)
没有重大区别,您可以使用return;
提前退出函数调用。无论哪种方式,它们都会返回NULL
,严格来说是工作流程。
答案 5 :(得分:1)
我不是专家,但我会说,如果差别可以忽略不计;有人可能会争辩说你放弃了回报;或者返回false;在函数结束时。
通常我会使用类似
之类的返回return true;
或
return $var;
如果我不想返回任何内容或者我想返回false,我就不要使用return
答案 6 :(得分:1)
在PHP和Python等语言中没有真正的区别。 return;
可以用来过早地打破这个功能。
然而,当选择的编程语言是C / C ++,Java,C#时,有一个区别,其中没有返回表示void
答案 7 :(得分:0)
一旦调用return
,函数调用就会终止。它就像休息一样。因此,如果您的返回位于中间,则会获得一些性能,因为该函数的其余部分未执行。
对于其余部分,通常更好(以可读性方式)使用显式返回而不是隐式返回。如果在函数中保留返回值,您将知道对该函数的调用可能需要返回值。
答案 8 :(得分:0)
return将中断/退出该函数(在switch / case中认为break)
function someMethod( $someArg ) {
if(condition) {
return; // will exit function
}
// could be more code
}
答案 9 :(得分:0)
我有时喜欢使用“空” return
作为函数的最后一条语句,以友好地提醒我们该函数不应返回任何值。
class foo {
var $name;
public function bar($x) {
$this->name = $x;
return;
}
}
在ADA中,您有procedures
和functions
。首先不返回任何数据,它们只是执行一些语句。这些函数可以返回数据。
因此,空的return
就像“这是一个过程”。
答案 10 :(得分:0)
非常有趣(我认为),具有返回类型会产生很大的不同。三种返回null
会引发三种不同的错误:
function foo() : string {
// return nothing
// TypeError exception: Return value of foo() must be of the type string, none returned
}
function foo() : string {
return;
// Fatal error: A function with return type must return a value
}
function foo() : string {
return null;
// TypeError exception: Return value of foo() must be of the type string, null returned
}
我不会猜到,因为所有错误都是运行时,并且所有返回值在技术上都是null
。