scala - scala模式匹配字符串序列中的值
问题描述
变量 someKey 可以是“a”、“b”或“c”。
我可以做这个:
someKey match {
case "a" => someObjectA.execute()
case "b" => someOther.execute()
case "c" => someOther.execute()
case _ => throw new IllegalArgumentException("Unknown")
}
如何压缩此模式匹配,以便我可以检查 someKey 是否与例如 Seq("b", "c") 以及它是否在序列中,然后将两行模式匹配替换为一行?
编辑:
someKey match {
case "a" => someObjectA.execute()
case someKey if Seq("b","c").contains(someKey) => someOther.execute()
case _ => throw new IllegalArgumentException("Unknown")
}
解决方案
您可以在case
子句中使用“或”:
someKey match {
case "a" => someObjectA.execute()
case "b"|"c" => someOther.execute()
case _ => ???
}
推荐阅读
- vb.net - 如何将多个文件名从文件夹复制到 vb.net 中的列表框
- reactjs - 如何在 redux-persist 存储中的多个减速器上运行迁移?
- ssh - SSH 到 Google Cloud Platform 虚拟机不工作:IAM 权限不足
- python - 如何在不更改目录的情况下在 Google Colab 上运行 python 脚本
- r - 绘制具有 3 个变量和两个 y 轴(不同比例)的折线图
- c# - struct c#中数据结构(引用类型)的值行为
- python - DataFrame.show() 在 Databricks 中引发错误
- javascript - 在移动设备上禁用 jquery/js
- javascript - 如何在噪声产生的地形中实现相机移动
- go - 如何进行可重新启动、线程安全的 AfterFunc() 调用