尝试让我的案例匹配按预期工作时出现问题。 我要找的结果如下:
案例1或2 =>随机选择一个参考
任何其他数字超过2 =>随机选择(数字 - 2)参考
案例无=>抛出异常
我在实现这个问题时遇到了问题。到目前为止我有:
val randomList: List = actualList.size match {
case 1 => scala.util.Random.shuffle(actualList).take(1)
case x? => scala.util.Random.shuffle(actualList).take(2)
case None => throw new IllegalStateException("references have not been generated successfully.")
}
我收到错误消息,其中包含'无'声明模式类型与预期类型Int。
不兼容如果有更好的方法来实现这一点,请分享。
非常感谢任何帮助。
由于
答案 0 :(得分:2)
您可以使用|
,警卫和_
来实现此目标
val randomList: List = actualList.size match {
case 0 => throw new IllegalStateException("references have not been generated successfully.")
case 1 | 2 => scala.util.Random.shuffle(actualList).take(1)
case _ => scala.util.Random.shuffle(actualList).take(2)
}
答案 1 :(得分:2)
我认为你可以立即改组以简化case
子句中的每个表达式:
val actualList = List(1, 2, 3)
val shuffled = Random.shuffle(actualList)
shuffled.size match {
case 0 => throw new RuntimeException()
case 1 | 2 => shuffled.take(1)
case _ => shuffled.take(2)
}