gpt4 book ai didi

scala - 如何将字符串作为包含多个字符串的参数

转载 作者:行者123 更新时间:2023-12-04 17:52:30 25 4
gpt4 key购买 nike

我的代码如下:

var args = "arg1,arg2" //come from external and also many e.g. arg3,arg4 ...
df.select(args.split(","):_*)

然后得到了错误:

:31: error: no `: *' annotation allowed here (such annotations are only allowed in arguments to *-parameters) df.select(args.split(","):*)



任何机构都可以提供帮助?谢谢。

最佳答案

嗯...使用varargs语法 ( : _* ) 仅适用于需要可变参数的函数。

scala> def iAcceptVarArgs(strings: String*) = println(strings)
// iAcceptVarArgs: (strings: String*)Unit

scala> iAcceptVarArgs("str1", "str2")
// WrappedArray(str1, str2)

scala> iAcceptVarArgs(List("str1", "str2"): _*)
// List(str1, str2)

它不适用于不需要可变参数的函数,
scala> def iDoNotAcceptVarArgs(s: String) = println(List(s))
// iDoNotAcceptVarArgs: (s: String)Unit

scala> iDoNotAcceptVarArgs(List("str1"): _*)
// <console>:14: error: no `: _*' annotation allowed here
// (such annotations are only allowed in arguments to *-parameters)
// iDoNotAcceptVarArgs(List("str1"): _*)
^

Dataframe.select有以下签名,
def select(col: String, cols: String*): DataFrame

这意味着第一个参数是固定的,只有第二个参数可以是可变参数

在这种情况下,您应该使用模式匹配,
val args = "arg1,arg2"

val dfSelection = args.split(",").toList match {
case a1 :: tail => df.select(a1, tail: _*)
case Nil => df // well... what to do here ?
}

关于scala - 如何将字符串作为包含多个字符串的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47830951/

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