If 语句内部和外部的 Return

Posted

技术标签:

【中文标题】If 语句内部和外部的 Return【英文标题】:A Return inside and outside an If Statement 【发布时间】:2013-08-19 10:11:51 【问题描述】:

这可能是一个相当容易回答的问题,但它一直困扰着我一段时间。

如果在 if 语句中,在方法中(在 Java 语言中)有一个 return 语句,但我在最后添加另一个作为包罗万象并避免错误,两个返回值都会被触发如果if语句为真,一个接一个?

一个例子:

public int getNumber() 
 if( 5 > number) 
 return 5;
 
 return 0;
 

结果:方法返回 5,然后通过堆栈逻辑,此后不久返回 0。

或者,我是否需要像这样使用外部变量:

int num = 1;
public int getNumber() 
 if( 5 > number) 
 num = 5;
 
 return num;
 

结果:方法将变量 num 更改为 5,然后返回 num 以供使用。我想在这种情况下,根据变量的使用情况,不一定需要 return 语句。

提前致谢。

【问题讨论】:

【参考方案1】:

不,这两个值都不会返回。 return 语句会在此处停止方法的执行,并返回其值。事实上,如果在return 之后有代码,编译器知道由于return 而无法到达,它就会报错。

您不需要使用if 之外的变量在最后返回它。但是,如果您的方法又长又复杂,则此技术有助于提高可读性和清晰度,因为只使用了一个 return 语句。

【讨论】:

哦,对了,无论如何代码都无法访问。感谢您的回复。【参考方案2】:

仅使用第一个返回语句命中。然后该方法终止。

有一些代码约定不赞成使用多个返回语句,因为它们可能难以阅读,但我不是其中之一。 :)

【讨论】:

没关系,我想我现在会打破常规。感谢您的回答。 @A13X - 这是一个非常不典型的约定。见Should a function have only one return statement?

以上是关于If 语句内部和外部的 Return的主要内容,如果未能解决你的问题,请参考以下文章

根据语言语义制作外部语句的“else if”部分?

将“继续”从函数内部传递到 Python 中的外部循环

涉及 e.preventDefault 的 if/else 语句

Java 内部类

js中returnreturn false return true各自代表什么含义

return 和break的区别