Scala 3 有非常方便的聯合型別。我正在shapeless為 Scala 2 尋找更接近的東西,以允許類似的行為。例子:
case class Cs1()
case class Cs2()
我試過shapeless.v了,但它似乎沒有像我想象的那樣作業。
val v: Cs1 v Cs2 = Cs1() // compile error
錯誤:
[error] found : example.Hello.Cs1
[error] required: example.Hello.Cs1 ∨ example.Hello.Cs2
有什么東西是無形的嗎?
uj5u.com熱心網友回復:
shapeless.∨用于背景關系邊界,您不能在回傳型別中使用它。
def foo[T: (Cs1 |∨| Cs2)#λ] = ???
foo[Cs1] // compiles
foo[Cs2] // compiles
foo[Int] // doesn't compile
也可以看看
如何定義“型別析取”(聯合型別)?
2種以上的無形型別析取
https://milessabin.com/blog/2011/06/09/scala-union-types-curry-howard/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/511344.html
上一篇:如何使用基本控制器設定T
下一篇:如何只接受存在型別的特定子型別?
