如果在Scala中返回错误

Posted

技术标签:

【中文标题】如果在Scala中返回错误【英文标题】:error in if return in 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 值和变量以及范围的基础知识 【参考方案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

【讨论】:

以上是关于如果在Scala中返回错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在scala play框架中停止执行或抛出错误

Scala 错误或功能?大写字母变量的多重赋值错误

Scala入门系列

为什么我的scala代码有些错误?

我在eclipse中安装 scala IDE 时候,出现以下的错误是啥原因

scala 选项和数据类型