假设我们有一个像这样的枚举值索引的地图
sealed trait A
case object B extends A
case object C extends A
type SafeMap = Map[A, String]
是否有可能以某种方式强制执行此类地图的详尽无遗? 也许与依赖类型?如果不是在斯卡拉,那么伊德里斯也很有趣。
为了澄清,我希望对任何检查Map都有为每个ADT变体定义的条目的ADT都有一个通用约束。
答案 0 :(得分:2)
ADT Map[A,String]
的{{1}}几乎是一个函数A
你可以做到
A => String
使用编译器的致命警告标志(否则非详尽的模式匹配只是警告),这应该会让你走得很远。
PS:你应该把你的案例类/对象定为最终