我有一个案例类为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}
是否可以解决这个问题,还是需要采取不同的方法?
答案 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)
。