簡體   English   中英

值函數的Scala類型不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM