gpt4 book ai didi

scala - "<:"在 Scala 中意味着什么?

转载 作者:行者123 更新时间:2023-12-03 06:09:40 25 4
gpt4 key购买 nike

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

type Currency <: AbstractCurrency

我无法理解这意味着什么。

最佳答案

这意味着定义了一个抽象类型成员(在某个上下文中,例如特征或类),因此该上下文的具体实现必须定义该类型。但是,有一个限制,即该类型 (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 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
}

关于scala - "<:"在 Scala 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com