Sco*_*son 21 types scala currying higher-kinded-types kind-projector
让我们假设我有一个具有两个类型参数的特征,例如
trait Qux[A, B]
Run Code Online (Sandbox Code Playgroud)
和另一个具有更高通道类型参数的特征,例如
trait Turkle[C[_]]
Run Code Online (Sandbox Code Playgroud)
我希望能够将一个固定值替换为其中一个类型参数Qux,以便它可以用于参数化Turkle.
这是一个示例(在Scala中没有意义的代码!):
trait Baz[A] extends Turkle[Qux[A, _]]
Run Code Online (Sandbox Code Playgroud)
任何人有任何想法如何实现这种效果?
Lac*_*lan 23
Jason Zaugg想出了最简洁的方法:
trait Baz[A] extends Turkle[({type x[a]=Qux[A, a]})#x]
Run Code Online (Sandbox Code Playgroud)
IntelliJ的Scala插件可以选择将其折叠为:
trait Baz[A] extends Turkle[x[a]=Qux[A, a]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |