gpt4 book ai didi

Scala,扩展具有通用特征的对象

转载 作者:行者123 更新时间:2023-12-04 09:36:22 25 4
gpt4 key购买 nike

我正在使用 Scala 并且我想扩展一个具有特征的(单例)对象,它提供数据结构和一些方法,如下所示:

trait Tray[T] {
val tray = ListBuffer.empty[T]

def add[T] (t: T) = tray += t
def get[T]: List[T] = tray.toList
}

然后我想将特征混合到一个对象中,如下所示:
object Test with Tray[Int]

但是 add中存在类型不匹配和 get :
Test.add(1)
// ...

我怎样才能让它发挥作用?或者我的错误是什么?

最佳答案

问题是你用 T 遮蔽了特征的类型参数。在 addget方法。看我的回答 here有关该问题的更多详细信息。

这是正确的代码:

trait Tray[T] {
val tray = ListBuffer.empty[T]

def add (t: T) = tray += t // add[T] --> add
def get: List[T] = tray.toList // get[T] --> add
}

object Test extends Tray[Int]

注意使用 extends在对象定义中——参见 the spec 的第 5.4 节解释原因 with单独在这里不起作用。

关于Scala,扩展具有通用特征的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023712/

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