Scala 什么是<;:&引用;在斯卡拉是什么意思?

Scala 什么是<;:&引用;在斯卡拉是什么意思?,scala,Scala,我在看p。《Scala编程》第二版第469页。有一行代码如下: type Currency <: AbstractCurrency type Currency表示“必须是”、“必须符合”、“必须扩展”的子类型。 大多数情况下,它会显示为泛型参数的绑定,例如 class Home[P <: Person] class Home[P这意味着定义了一个抽象类型成员(在某些上下文中,例如trait或class),因此该上下文的具体实现必须定义该类型。但是,有一个约束条件是该类型(Cur

我在看p。《Scala编程》第二版第469页。有一行代码如下:

type Currency <: AbstractCurrency
type Currency表示“必须是”、“必须符合”、“必须扩展”的子类型。
大多数情况下,它会显示为泛型参数的绑定,例如

class Home[P <: Person] 

class Home[P

这意味着定义了一个抽象类型成员(在某些上下文中,例如trait或class),因此该上下文的具体实现必须定义该类型。但是,有一个约束条件是该类型(

Currency
)实际上必须是
AbstractCurrency
的子类型。这样抽象上下文就可以使用
Currency
进行操作,因为它了解
AbstractCurrency
的每个操作

trait AbstractCurrency {
  def disappearInGreece(): Unit
}

abstract class Economy {
  type Currency <: AbstractCurrency

  def curr: Currency

  // can call disappear... because `Currency`
  // is an `AbstractCurrency`
  def shake(): Unit = curr.disappearInGreece()
}
失败。在约束条件正常的情况下:

trait Euro extends AbstractCurrency

class Angela(val curr: Euro) extends Economy {
  type Currency = Euro
}

这个问题是关于Scala的,但我认为值得一提的是,
我想补充一些要点,这些要点将描述See-Allow-What-does“特性A的可用性优势。这正是我所寻找的——原因,而不仅仅是它的功能!
trait Euro extends AbstractCurrency

class Angela(val curr: Euro) extends Economy {
  type Currency = Euro
}
case class myApiClass[param <: BaseParameter](requestBody: String, parameter: param)
trait BaseParameter
case object Parameter1 extends BaseParameter
case object Parameter2 extends BaseParameter
case object Parameter3