Scala如何定义一种返回值?

时间:2015-03-28 12:13:40

标签: scala

Scala如何定义一种返回值?

def sqrt = (x: Int) =>
  if (x > 0 && x < 4)
    x * x

我的代码的返回类型是Int => AnyVal。但如果我把它改成

def method = (x: String) =>
  if (x.equals("abc"))
    x.concat(x)

返回类型为String => Any。但为什么不AnyRef? String是一个对象,因此最好使用AnyRef。我错了吗?

1 个答案:

答案 0 :(得分:12)

由于您的if表达式没有其他内容,因此如果条件的计算结果为false,则返回UnitUnit AnyVal扩展Int,因此在第一种情况下,最具体的类型是AnyVal。由于String扩展了AnyRef,因此在第二种情况下,最具体的类型为Any