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