是否可以使用返回func(varargs*)
的高阶函数,例如(s: String*) => String
我正在尝试做以下事情:
def concatKeys(delimiter: String) = {
def concat(k1: String, k2: String): String = if (k1.isEmpty) k2 else k1 + delimiter + k2
(keys: String*) => keys.foldLeft("")(concat)
}
但当我按预期使用它时,代码不会编译:
val key: String = concatKeys(delimiter)(keyAcc, kv._1)
如果我将其更改为Traversable
:
def concatKeys(delimiter: String) = {
def concat(k1: String, k2: String): String = if (k1.isEmpty) k2 else k1 + delimiter + k2
(keys: Traversable[String]) => keys.foldLeft("")(concat)
}
它自然地编译:
val key: String = concatKeys(delimiter)(Set(keyAcc, kv._1))
那么,不可能用varargs返回HOF吗?如果没有,为什么不呢
谢谢大家!
Varargs不是有效的类型,它们只是糖语法,仅在方法中可用,而在函数中不可用
请记住,在方法体内部,vararg参数实际上只是一个Seq
所以不,你不能。