首页 > 解决方案 > 没有证据的证据

问题描述

是否有一种Not[Ev]类型或实现它的方法,我可以通过以下方式使用

def someMethod[X,Y](implicit ev:Not[X <:< Option[Y])= ???

意味着 X 类型不是 Option[_] 类型?(并且可以做更多的事情)

标签: scalaimplicit

解决方案


文档implicitAmbiguous建议以下类型不等式的实现

trait =!=[C, D]

implicit def neq[E, F] : E =!= F = null

@annotation.implicitAmbiguous("Could not prove ${J} =!= ${J}")
implicit def neqAmbig1[G, H, J] : J =!= J = null
implicit def neqAmbig2[I] : I =!= I = null

在哪里

def someMethod[X,Y](implicit ev: X =!= Option[Y])= ???

someMethod[Int, String]       // ok
someMethod[Option[Int], Int]  // error

推荐阅读