gpt4 book ai didi

varargs 方法的 Scala 类型边界

转载 作者:行者123 更新时间:2023-12-05 00:05:42 25 4
gpt4 key购买 nike

我有以下基类:

trait Foo
abstract class Bar[A <: Foo](f : A*) extends Foo

然后我想创建一个子类:
case class Baz(f : Foo*) extends Bar(f)

但是,当我这样做时,编译器会感到不安,告诉我:

inferred type arguments [Seq[Foo]] do not conform to class Bar's type parameter bounds [A <: Foo]



向 Bar 添加显式类型参数,如
case class Baz(f : Foo*) extends Bar[Foo](f)

然后提示类型不匹配 - 在需要 Foo 时找到了 Foo*。

这是什么原因造成的?我该如何解决?

最佳答案

如上所写,编译器需要一系列以逗号分隔的 Foo 类型的实例。作为 Bar ctor 的参数, 而它被赋予一个类型 Foo* 的单个实例, 翻译成 Seq[Foo]幕后。

做这个:

case class Baz(f : Foo*) extends Bar[Foo](f: _*)

这就是重复参数在所有方法之间传递的方式,而不仅仅是 ctors。
下面的也将起作用:
case class Baz(f : Foo*) extends Bar(f: _*)

关于varargs 方法的 Scala 类型边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279868/

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