Scala 2.8 枚举ID,在匹配操作中不允许?
我有一个枚举类,从一些成员中提取了“id”值,并将它们存储在Int变量中。这是否是个好主意不是问题 问题是,为什么我不能做到以下几点: 假设我有s:Int,它保存了这些id值中的一个。。。我想对实际的枚举值进行匹配。如下所示: 比赛{ QID.MEM_RD.id=>//什么 QID.MEM_WRT.id=>//还有别的吗 } 这似乎给了我一个“需要稳定标识符”的失败。所以我最终写的代码就像 if(s==QID.MEM_RD.id) //某物 else if(s==QID.MEM_WRT.ID) //别的 所以。。对我来说,Scala有这么好的特性是有点奇怪的,但似乎迫使我回到一种更丑陋的编码风格——我更愿意使用它们的匹配特性 有什么想法吗?我想我可以重新构造以停止提取ID。。。但这只是match不允许这样的想法让我有点恼火 (注意:我不尝试将id值持久地存储在任何地方……只在程序执行期间使用它们。)Scala 2.8 枚举ID,在匹配操作中不允许?,scala-2.8,Scala 2.8,我有一个枚举类,从一些成员中提取了“id”值,并将它们存储在Int变量中。这是否是个好主意不是问题 问题是,为什么我不能做到以下几点: 假设我有s:Int,它保存了这些id值中的一个。。。我想对实际的枚举值进行匹配。如下所示: 比赛{ QID.MEM_RD.id=>//什么 QID.MEM_WRT.id=>//还有别的吗 } 这似乎给了我一个“需要稳定标识符”的失败。所以我最终写的代码就像 if(s==QID.MEM_RD.id) //某物 else if(s==QID.MEM_WRT.ID)
-杰伊我想你可以在这种情况下使用if守卫
s match {
case a if (s == QID.MEM_RD.id) => println("you read!")
case b if (s == QID.MEM_WRT.id) => println("you wrote!")
}