【发布时间】:2011-04-30 05:34:02
【问题描述】:
我想利用 Scala 在缺少匹配项时发出的警告(“并非详尽无遗”) - 这样我就不会忘记一个(我有几十个)。以下简化示例显示了我的尝试:
sealed case class MESSAGE()
class SUCCESS_MESSAGE extends MESSAGE
class FAILURE_MESSAGE extends MESSAGE
def log(str: String, msgType: MESSAGE) {
msgType match {
case t:SUCCESS_MESSAGE => println("FAILURE: " + str)
case t:FAILURE_MESSAGE => println("SUCCESS: " + str)
}
}
问题是它说“匹配并不详尽!”尽管列出了所有可能的组合。如果我把“case _ =>”放在那里,整个警告点对我来说是无效的,因为我可以添加
class INFO_MESSAGE extends MESSAGE
并且不会发出警告。
有解决办法吗?
【问题讨论】:
-
SUCCESS_MESSAGE 应该打印“FAILURE:”,你确定吗?
-
我强烈建议不要在任何情况下扩展案例类。仅供参考。