相关疑难解决方法(0)

强制类型差异

在Scala中,我可以在编译时强制执行类型相等.例如:

case class Foo[A,B]( a: A, b: B )( implicit ev: A =:= B )

scala> Foo( 1, 2 )
res3: Foo[Int,Int] = Foo(1,2)

scala> Foo( 1, "2" )
<console>:10: error: Cannot prove that Int =:= java.lang.String.
Run Code Online (Sandbox Code Playgroud)

有没有办法强制执行类型A和类型B应该是不同的?

types scala

57
推荐指数
5
解决办法
4899
查看次数

如何确保Scala中的类型参数不同?

通过以下定义,可以确保具体类型参数相等:

trait WithEqual[T1 >: T2 <: T2, T2]
Run Code Online (Sandbox Code Playgroud)

所以行

type A = WithEqual[Int, Int]
Run Code Online (Sandbox Code Playgroud)

将是合法的.现在我的问题是:如何实现恰恰相反?因此,以下行应该不会编译:

type B = WithUnequal[Int, Int]
Run Code Online (Sandbox Code Playgroud)

generics scala

4
推荐指数
1
解决办法
214
查看次数

标签 统计

scala ×2

generics ×1

types ×1