【问题标题】:error in if return in Scala如果在Scala中返回错误
【发布时间】:2017-06-01 17:11:25
【问题描述】:
def vertify(a:Int):Int= {
    val result = 3
    if(a>4) {
        val result = a
    }
    return result
}

我定义了上面的函数,然后使用它:

scala> vertify(5)
res4: Int = 3

为什么结果是 3 而不是 5?

【问题讨论】:

  • 能否请您提供有关问题的更多详细信息以及您尝试解决问题的其他方法。
  • 您应该阅读有关 Scala 值和变量以及范围的基础知识

标签: scala if-statement return


【解决方案1】:
if(a>4) {
  val result = a
}

这将创建第二个名为 resultval,它仅在 if 块内限定(可见),因此 return 语句始终返回第 2 行定义的值。

无法重新分配val,因此如果您需要更改值,则需要使用var

var result = 3
if (a > 4) {
  // no `var` or `val` prefix indicates we are
  // referring to an existing variable that's already declared
  result = a
}

但是对于像这样的简单情况,您可以避免使用该变量并使用:

def vertify(a: Int): Int = if (a > 4) a else 3

【讨论】:

    【解决方案2】:

    您在 if 块中定义了一个新值。这样做:

    def vertify(a:Int):Int= {
      val result = 3
      if(a>4) {
        a
      } else {
        result
      }
    }
    

    或更短:

    def vertify(a: Int): Int = if (a > 4) a else 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多