加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:06:54 所属栏目:安全 来源:网络整理
导读:我的代码如下: 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 *-pa
我的代码如下:

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

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

在这种情况下你应该使用模式匹配,

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 ?
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读