【发布时间】:2022-01-23 20:33:41
【问题描述】:
我能否有一个返回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))
那么,不可能返回带有可变参数的 HOF 吗?如果没有,为什么不呢?
谢谢大家!
【问题讨论】:
-
已经有一个
.mkString用于执行此操作的集合。 -
很高兴知道。 :D 谢谢。
标签: scala apache-spark functional-programming variadic-functions higher-order-functions