Sub*_*oid 4 types scala variadic-functions
我有以下基类:
trait Foo
abstract class Bar[A <: Foo](f : A*) extends Foo
Run Code Online (Sandbox Code Playgroud)
我想创建一个子类:
case class Baz(f : Foo*) extends Bar(f)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,编译器会感到沮丧,告诉我:
推断类型参数[Seq [Foo]]不符合类Bar的类型参数边界[A <:Foo]
向Bar添加显式类型参数,如
case class Baz(f : Foo*) extends Bar[Foo](f)
Run Code Online (Sandbox Code Playgroud)
然后抱怨类型不匹配 - 当需要Foo时发现Foo*.
是什么导致了这个?我应该如何解决这个问题?
如上所述,编译器期望一系列Foo以逗号分隔的类型实例作为ctor的参数Bar,而它被赋予一个类型的单个实例Foo*,它被转换为Seq[Foo]场景后面.
做这个:
case class Baz(f : Foo*) extends Bar[Foo](f: _*)
Run Code Online (Sandbox Code Playgroud)
这是在所有方法之间传递重复参数的方式,而不仅仅是ctors.以下将适用:
case class Baz(f : Foo*) extends Bar(f: _*)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |