如果那么在地图中的其他地方

时间:2016-09-08 14:41:32

标签: scala functional-programming

什么是更简洁的方式来表示以下If if else:

val result = scores.map(score =>
  if (score == 0)
    ("retake", 1)
  else if (score < 0)
    ("fail", 1)
  else
    ("pass", 1)
)

2 个答案:

答案 0 :(得分:9)

使用模式匹配:

val result = scores.map { 
  case 0 => ("retake", 1)
  case s if s < 0 => ("fail", 1)
  case _ => ("pass", 1)
}

答案 1 :(得分:3)

与守卫进行模式匹配

scores map {
  case 0 => "retake" -> 1
  case x if x < 0 => "fail" -> 1
  case _ => "pass" -> 1
}