gpt4 book ai didi

Scala - 是否可以编写具有可变参数的 HOF?

转载 作者:行者123 更新时间:2023-12-05 02:35:50 25 4
gpt4 key购买 nike

我能否有一个返回 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 吗?如果不是,为什么不呢?

谢谢大家!

最佳答案

Varargs 不是有效类型,它们只是糖语法,仅适用于方法,不适用于函数
请记住,在方法体内,可变参数实际上只是一个 Seq

所以不,你不能。

关于Scala - 是否可以编写具有可变参数的 HOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70452081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com