假设我有一个特征Foo[A, B]
。
我想定义一个类Bar
,使用Foo
进行参数化,并在Foo
方法中重用Bar
类型参数。如下所示的内容(此代码段不会编译):
trait Bar[Foo[A, B]] {
def doSmth[C](A => C): C
}
有没有办法实现类似的东西,并且在Bar
声明中只有一个类型参数?
P.S。如果有人能为所描述的内容提出正确的术语,那也很棒。
答案 0 :(得分:1)
不确定,但也许这就在你想去的地方附近。
trait Foo[A,B]
trait Bar[A] { self: Foo[A,_] =>
def doSmth[C](atoc: A => C): C
}
或者,使用类型别名。
trait Foo[A,B] {type FooA = A}
trait Bar { self: Foo[_,_] =>
def doSmth[C](atoc: FooA => C): C
}
这意味着如果您有Foo
,则需要Bar
。
答案 1 :(得分:1)
您可以使用#运算符来访问类或特征的类型成员。
find . -name \*.xml | xargs -d '\n' egrep '(pattern one|pattern two)'