簡體   English   中英

通用的“嵌套成員”特征

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM