区别是:1、语义上没有差别;2、差异的仅是细微细节;3、完全一致。语义上没有差别,但是当有嵌套if…else逻辑并且代码使用缩进来表示代码块的嵌套结构时,名列前茅种写法(可以称之为“guard”写法)可以使用较少的缩进,因为else是隐含的。
1、语义上没有差别
但是当有嵌套if…else逻辑并且代码使用缩进来表示代码块的嵌套结构时,名列前茅种写法(可以称之为“guard”写法)可以使用较少的缩进,因为else是隐含的。
这种写法在if的then块的末尾是个return。由于它位于函数中间而不是末尾,所以也叫做“early return”。这种early return使这个then块可以被看作控制流的终结块,而在这个if之后的部分就会隐含着else(或者说if (!condition))的语义。
2、差异的仅是细微细节
在需要关心的层面上实现相同;有差异的仅是细微细节,可忽略。
Lua给它生成的字节码几乎一样:
Lua 5.2.3:
3、完全一致
如果用Java来写题主的例子,会是:public class xx {
public static int dum1(boolean t) {
if (t) return 1;
return 0;
}
public static int dum2(boolean t) {
if (t) return 1;
else return 0;
}
}
然后借助HotSpot Client Compiler(C1)来分析一个“合理的编译器”的做法。最后结果两者完全一样。
延伸阅读:
什么是程序函数?
计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理;所谓出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序。
如sin(30)=0.5,这里的30就是函数的参数值,它将由入口传给计算机,供计算机处理,而0.5就是函数值,它将由出口返回给调用这个函数的程序。另外,我们数学里的函数是固定的那些,而计算机中的函数,可以根据其运算功能,由我们自己去定义,只要是运算功能是固定的,我们就可以把它定义成一个函数,这样可以避免相同的程序段在程序中重复出现,在需要它时,只需要调用相应的函数就行了。这样不仅可以使我们编写的程序精简,而且可以使我们的程序更富有可读性。
文章标题:程序函数条件与返回的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38589