簡體   English   中英

Scala大小寫匹配字符串

[英]Scala case match a String

我正在嘗試匹配字符串的大小寫,並具有以下代碼:

val selectedAnswers: List[Int] = questionType match {
  case "CHECK_BOX"    => {
    answerCheckBox match {
      case Some(answers) => answers
      case None => List()
    }
  }
  case "RADIO_BUTTON" => {
    answerRadio match {
      case Some(answer) => List(answer)
      case None => List()
    }
  }
  case _ => {
    List()
  }
}

當String不是RADIO_BUTTON或CHECK_BOX時,為什么不能通過_大小寫?

實際上,answerRadio和answerCheckbox的值來自我提交給控制器的表單。

val (currentQuesId, questionType, answerRadio, answerCheckBox) = runExamForm.bindFromRequest.get

表單聲明如下所示:

  val runExamForm = Form(
    tuple(
      "currentQuestionId" -> number,
      "questionType" -> text,
      "answerRadio" -> optional(number),
      "answerCheckbox" -> optional(list(number))
    )
  )

這是代碼的“等效”版本:

val selectedAnswers: List[Int] = questionType match {
  case "CHECK_BOX"    => answerCheckBox.toList.flatten
  case "RADIO_BUTTON" => answerRadio.toList
  case _ => List()
}

它能按預期工作嗎?

這是一個很長的路,但是請嘗試使用其他名稱替換_x很好),並確保您的代碼只包含常規空格。

我很少見到像這樣的異常錯誤,這是由代碼中的其他非打印字符引起的,這似乎總是由OSX Skype客戶端上的聊天中粘貼代碼引起的。

另外...您可以在代碼示例中確認MatchError發生在哪一行嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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