鉴于我有一种使用密封特征和表示值的案例对象的枚举,是否可以强制执行一种机制来检索给定类型的单个唯一值,而不需要隐式参数?
隐含这将是
sealed trait Enum
sealed trait Value1 extends Enum
case object Value1 extends Value1 { implicit val me: Value1 = Value1 }
sealed trait Value2 extends Enum
case object Value2 extends Value2 { implicit val me: Value1 = Value1 }
def test[V <: Enum](implicit evidence: V): V = evidence
test[Value1]
是否可以删除隐式参数进行测试?也就是说,要确保 V 是已定义的 Enum 子类型(显然, test[Enum] 应该失败)。戈尔迪安结是:
object Enum {
def unique[V <: Enum]: V = ???
}
?