“<:”是什么意思在Scala?

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

type Currency <: AbstractCurrency

我不能破译这是什么意思。

这意味着定义了抽象类型成员(在一些上下文中,例如trait或类),以便该上下文的具体实现必须定义该类型。但是,这种类型(货币)必须实际上是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 RadioactiveBeef

class NiceTry(val curr: RadioactiveBeef) extends Economy {
  type Currency = RadioactiveBeef
}

失败。有约束可以:

trait Euro extends AbstractCurrency

class Angela(val curr: Euro) extends Economy {
  type Currency = Euro
}
http://stackoverflow.com/questions/6828875/what-does-mean-in-scala

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:“<:”是什么意思在Scala?