gpt4 book ai didi

scala - 理解类型投影

转载 作者:行者123 更新时间:2023-12-04 19:46:54 24 4
gpt4 key购买 nike

取自 typelevel/kind-projector ,有什么区别:

// partially-applied type named "IntOrA"
type IntOrA[A] = Either[Int, A]


// type projection implementing the same type anonymously (without a name).
({type L[A] = Either[Int, A]})#L

?

它们是等价的吗?

最佳答案

正如评论中所说,它们几乎是等效的。

假设你有一个类(class) trait Super[F[_]] {} ,并且您想在 F[x] = Either[Int, x] 处实现它
你可以写:

type IntOrA[A] = Either[Int, A]
class B extends Super[IntOrA] {}

但是如果你想要一个单衬,你可以写:
class B extends Super[({type L[A] = Either[Int, A]})#L] {}

或者使用 kind-projector 你可以这样写:
class B extends Super[λ(A => Either[Int, A])] {}

甚至:
class B extends Super[Either[Int, ?]] {}

除了使其成为一行并具有这种类型的匿名之外,没有其他区别。

关于scala - 理解类型投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781568/

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