【问题标题】:Scala: "explicit return" required?Scala:需要“显式返回”?
【发布时间】:2015-08-26 05:42:29
【问题描述】:

我认为在 Scala 中我不需要在 return 语句中显式放置“return”。所以我有以下代码:

  def checkSimple(str1: String, str2: String): Boolean = {

    if (str1 > str2) {
      println("str1 > str2")
      true
    }

    println("str1 <= str2")
    false
  }

如果我用 checkSimple("200", "150") 运行上面的代码,我会得到以下错误结果:

str1 > str2
str1 <= str2

但如果我在“true”前面添加“return”,如下所示,一切正常:

  def checkSimple(str1: String, str2: String): Boolean = {

    if (str1 > str2) {
      println("str1 > str2")
      return true
    }

    println("str1 <= str2")
    false
  }

那么在return语句行中是否真的需要“return”?

谢谢!

【问题讨论】:

  • 编译器应该如何知道您的意图是在 if 语句中返回 true
  • 有时-Xlint 会警告此类错误。但是 FSR 它甚至没有警告def g(i: Int, j: Int) = { if (i &lt; j) true ; false }。它警告def f = { true ; false }

标签: java scala boolean return


【解决方案1】:

最后一个表达式的值被用作返回,所以:

  def checkSimple(str1: String, str2: String): Boolean = {
    if (str1 > str2) {
      println("str1 > str2")
      true
    } else {
      println("str1 <= str2")
      false
    }
  }

会按照你的预期行事

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2015-06-25
    • 2014-04-09
    相关资源
    最近更新 更多