[英]Generic “nested members” trait
我正在構建一個由多個特征組成的類,其中一個特征提供了包含該類“成員”列表的功能:
trait WithNestedMembers[T] {
val members = new scala.collection.mutable.ListBuffer[T]
}
class MainClass extends WithNestedMembers[MainClass] {
// ...
}
這似乎工作正常。
現在,我想在其他特征中使用“嵌套”功能:
trait NestingUser {
this: WithNestedMembers[NestingUser] =>
var nestedValue = 0
def sumNested = nestedValue + members.map(_.nestedValue).sum
}
該定義本身似乎很好。 但是,我不能將其用作MainClass
一部分。 以下給出了一個錯誤:
class MainClass extends WithNestedMembers[MainClass] with NestingUser {
// Illegal inheritance, self-type MainClass does not conform to WithNestedMembers[NestingUser]
}
我懷疑我需要在某處使用某種類型限制,以說明WithNestedMembers[MainClass]
足以滿足WithNestedMembers[NestingUser]
要求。 但是哪里?
像這樣嘗試使T
與+T
協變
trait WithNestedMembers[+T] {
val members = List.empty[T]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.