Scala——有可能编写带有varargs的HOF吗



是否可以使用返回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

所以不,你不能。

相关内容

  • 没有找到相关文章

最新更新