加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:41:43 所属栏目:安全 来源:网络整理
导读:我正在看p。第469页“编程在Scala”第二版。有一行代码如下: type Currency : AbstractCurrency 我不能破译这是什么意思。 解决方法 这意味着定义了抽象类型成员(在一些上下文中,例如trait或类),以便该上下文的具体实现必须定义该类型。但是,这种类型(货
我正在看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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读