我有一个Enumeration类,并从一些成员中提取“id”值并将它们存储在Int变量中。这不是一个好主意/不是问题。
问题是,为什么我似乎无法做到以下几点:
假设我有s:Int,其中包含其中一个id值...我想对实际的枚举值进行匹配。如下所示:
匹配{ QID.MEM_RD.id => //某事
QID.MEM_WRT.id => //别的什么 }
这似乎让我失败了“需要稳定的标识符”。所以我最终编写了像
这样的代码if(s == QID.MEM_RD.id) //某事 否则if(s == QID.MEM_WRT.ID) //别的东西
所以...... Scala有这个不错的功能对我来说有点奇怪,但似乎迫使我回到更丑陋的编码风格 - 当我更愿意使用他们的匹配功能时。
有什么想法吗?我想我可以重组以停止提取ID ...但是这只是匹配不允许这让我感到烦恼的想法。
(注意:我不会尝试将id值永久存储在任何地方......只需在程序执行期间使用它们。)
-Jay
答案 0 :(得分:0)
我认为你可以在这种情况下使用警卫。
s match {
case a if (s == QID.MEM_RD.id) => println("you read!")
case b if (s == QID.MEM_WRT.id) => println("you wrote!")
}
http://programming-scala.labs.oreilly.com/ch03.html#PatternMatching