Scala类型在值函数上不匹配

时间:2017-01-08 20:09:52

标签: scala

我有一个案例类为case class Test(name: String, flag: Boolean)的应用程序,在尝试编译时我收到以下错误:

[error]  found   : String => Boolean
[error]  required: Boolean

以下是抛出错误的代码:

val flag = (input: String) => try {
  if(input.toInt == 1) true else false
} catch {case e: NumberFormatException => false}

是否可以解决这个问题,还是需要采取不同的方法?

1 个答案:

答案 0 :(得分:2)

您需要调用flag - 在实例化Test类型的新对象时创建的函数。像这样:

Test("some name", flag("1"))

另一种选择是重载Test - 类:

中的构造函数
case class Test(name: String, flag: Boolean)
    def this(name: String, input: String) = this(name, Test.flag(input))
}

object Test {
    def flag(input: String) = (input: String) => try {
        if(input.toInt == 1) true else false
    } catch { case e: NumberFormatException => false }
}

然后,您只需致电Test("some name", "1")即可获得Test("some name", true)