【发布时间】:2016-12-08 02:41:26
【问题描述】:
假设我有一个特征Foo[A, B]。
我想定义一个类Bar,使用Foo 进行参数化,并在Bar 方法中重用Foo 类型参数。如下所示(此 sn-p 无法编译):
trait Bar[Foo[A, B]] {
def doSmth[C](A => C): C
}
有什么方法可以实现类似的功能,并且在Bar 声明中仍然只有一个类型参数?
附言如果有人可以为所描述的内容提出正确的术语,那也很棒。
【问题讨论】:
-
如果
Foo是一个特征,那么将它包含在类型参数中的目的是什么?用例是什么? -
@m-z:我正在尝试创建一个基于
Bar的计算链(虽然我不确定它是否可以称为Monad)。Foo[A, B]代表当前的计算步长,它可以像Function1一样。我真的很希望Bar部分在其类型中携带一些计算上下文。 -
您是否需要了解
Bar中的Foo?还是只有类型参数?也就是说,如果你确实有多个类型参数,是Bar[A, B]还是Foo[A, B, F[A, B]?