[英]Scala type mismatch on value function
我有一個帶有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}
是否可以解決此問題,或者我需要采用其他方法?
實例化Test
類型的新對象時,需要調用創建的flag
函數。 像這樣:
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)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.