gpt4 book ai didi

scala - 是否可以在 Scala 中指定对泛型类型 τ 的约束,使得 τ < : σ ∧ τ ≠ σ?

转载 作者:行者123 更新时间:2023-12-04 02:02:07 26 4
gpt4 key购买 nike

我有一个类型:

class σ

现在我想定义一个类型:
class υ[τ <: σ]

附加要求 τ ≠ σ。

这可能吗?

最佳答案

使用 Miles Sabin 的回答 here :

trait =!=[A, B]

implicit def neq[A, B] : A =!= B = null
implicit def neqAmbig1[A] : A =!= A = null
implicit def neqAmbig2[A] : A =!= A = null

然后 :
scala> class A
defined class A

scala> class B[C <: A](implicit ev: C =!= A)
defined class B

scala> class D extends A
defined class D

scala> new B[D]() // OK, D is a subtype of A
res4: B[D] = B@4d8c463c


scala> new B[A]() // Error, A =:= A
<console>:15: error: ambiguous implicit values:
both method neqAmbig1 of type [A]=> =!=[A,A]
and method neqAmbig2 of type [A]=> =!=[A,A]
match expected type =!=[A,A]

scala> class E
defined class E

scala> new B[E]() // Error, E is not a subtype of A
<console>:15: error: type arguments [E] do not conform to class B's type parameter bounds [C <: A]

关于scala - 是否可以在 Scala 中指定对泛型类型 τ 的约束,使得 τ < : σ ∧ τ ≠ σ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com