以下编译:
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*
我是否遗漏了某些东西,或者编译器是否会抛出异常?
答案 0 :(得分: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]
。