此语法在scala [H <:Service [H]]中意味着什么

时间:2019-04-04 07:48:38

标签: scala f-bounded-polymorphism

我是新手,研究特征时发现了我不理解的语法

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

我想这可能是一个通用声明,但对于这种Scala语法Holder[H <: service.SealedHolder[H]]

仍然感到困惑

1 个答案:

答案 0 :(得分:2)

是的,这是一个通用声明,HSealedHolder[H]的子类型。

您可以阅读有关类型界限的信息 https://apiumhub.com/tech-blog-barcelona/scala-type-bounds/ 和F界多态性 https://tpolecat.github.io/2015/04/29/f-bounds.html

例如F界限与特征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
}