0

我正在研究一个特征然后我发现了我不理解的这种语法

trait Holder[H <: service.SealedHolder[H]] {
    val personId: String //ID.03
}

我想这可能是一个通用声明,但仍然对这个 scala 语法感到困惑Holder[H <: service.SealedHolder[H]]

4

1 回答 1

3

你是对的,它是一个泛型声明,它HSealedHolder[H].

您可以阅读有关类型边界 https://apiumhub.com/tech-blog-barcelona/scala-type-bounds/ 和 F-bounded polymorphism https://tpolecat.github.io/2015/04/29/f-bounds .html

例如,F-bounds 与 trait Ordered https://www.scala-lang.org/api/2.12.2/scala/math/Ordered.html一起使用

case class OrderedClass(n:Int) extends Ordered[OrderedClass] {
  def compare(that: OrderedClass) = this.n - that.n
}
于 2019-04-04T07:54:25.170 回答