1

以下编译:

def test(x:String)(implicit s:String *) = ???

但是,我似乎无法提供隐含的s.

def test2(x:String)(implicit s:String *) =
  test(x) // could not find implicit value for parameter s: String*

我错过了什么还是编译器应该抛出异常?

4

1 回答 1

1

这是因为在方法体内,var-args 参数被视为Seq[A]而不是特殊类型A*。您可以再次显式扩展序列:

def test2(x:String)(implicit s:String*) = test(x)(s: _*)

由于您不能将类型定义为String*,因此它会使隐式大小写无用,但是:

implicit val a = Seq("hallo", "gallo"): _*

// error: no `: _*' annotation allowed here

所以你需要使用Seq[String].

于 2013-10-07T13:06:06.703 回答