在 if 语句中使用 return 时有啥作用?
Posted
技术标签:
【中文标题】在 if 语句中使用 return 时有啥作用?【英文标题】:What does return do when used inside an if statement?在 if 语句中使用 return 时有什么作用? 【发布时间】:2011-11-15 05:58:41 【问题描述】:以下代码中 if 语句中的 return 有什么作用?
public void startElement(String namespaceURI, String localName,String qName,
Attributes atts) throws SAXException
depth++;
if (localName.equals("channel"))
currentstate = 0;
return;
if (localName.equals("image"))
// record our feed data - you temporarily stored it in the item :)
_feed.setTitle(_item.getTitle());
_feed.setPubDate(_item.getPubDate());
if (localName.equals("item"))
// create a new item
_item = new RSSItem();
return;
if (localName.equals("title"))
currentstate = RSS_TITLE;
return;
if (localName.equals("description"))
currentstate = RSS_DESCRIPTION;
return;
if (localName.equals("link"))
currentstate = RSS_LINK;
return;
if (localName.equals("category"))
currentstate = RSS_CATEGORY;
return;
if (localName.equals("pubDate"))
currentstate = RSS_PUBDATE;
return;
// if you don't explicitly handle the element, make sure you don't wind
// up erroneously storing a newline or other bogus data into one of our
// existing elements
currentstate = 0;
它是把我们带出 if 语句并继续下一条语句,还是把我们带出方法 startElement?
【问题讨论】:
好像这里的所有答案都是同时发布的,内容一样! 【参考方案1】:上面代码中的返回值会带你跳出方法。
【讨论】:
我还注意到它在执行 return 的行执行此操作。该行下的代码均未执行【参考方案2】:它完成了方法,所以它下面的代码不会被执行。
【讨论】:
【参考方案3】:它是否将我们带出 if 语句并继续下一步 声明还是将我们带出方法 startElement?
它会让你脱离方法.. return 语句终止函数的执行
【讨论】:
【参考方案4】:它将返回您在方法头中声明的内容(这里 void = nothing = 它只会结束方法)
【讨论】:
【参考方案5】:return 总是控制调用方法。
【讨论】:
【参考方案6】:这里的return可能是为了“提高”方法的性能,这样一旦执行了需要的场景,就不会执行其他比较。
但是,在一个方法中有多个返回点并不是一个好习惯。
正如我的 cmets 中所述,我会尝试不同的方法来实现相关代码的流程。
【讨论】:
-1 谁说拥有多个返回点不是好习惯?没关系(只要没有太多) 互联网上有很多关于函数中的多个退出点的争论。然而,在我的小经验中,我在调试方法时遇到了很多问题,返回语句分散在它的流程中。在这种情况下,返回语句为 7 并定义了方法的流程。 其实,你是对的......有是太多的回报。如果您编辑您的答案,我将删除我的反对票(除非您编辑您的帖子,否则我无法删除它 - 只需添加一个句号或其他内容,任何更改都可以让我删除它,但我被锁定,直到您这样做) 我想说大方法不应该有多个返回点。使用较小的方法更安全,因为它更容易快速了解必须在返回之前取消初始化的内容。【参考方案7】:是的。此处的返回将使方法失去控制。
【讨论】:
【参考方案8】:return 将结束方法的流程,在功能上与使用较短的else if
之类的链相同
/* if (localName.equals("channel"))
currentstate = 0; // This can be removed because it's the default below.
else */ if (localName.equals("image"))
// record our feed data - you temporarily stored it in the item :)
_feed.setTitle(_item.getTitle());
_feed.setPubDate(_item.getPubDate());
else if (localName.equals("item"))
// create a new item
_item = new RSSItem();
else if (localName.equals("title"))
currentstate = RSS_TITLE;
else if (localName.equals("description"))
currentstate = RSS_DESCRIPTION;
else if (localName.equals("link"))
currentstate = RSS_LINK;
else if (localName.equals("category"))
currentstate = RSS_CATEGORY;
else if (localName.equals("pubDate"))
currentstate = RSS_PUBDATE;
else
currentstate = 0;
【讨论】:
以上是关于在 if 语句中使用 return 时有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章