Scala中如何将字符串数组的值作为String可变参数传递?
Scala 数组转可变参数(varargs)传递方案
在Scala中,要把字符串数组传递给(String, String*)形式的方法,核心是用: _*语法将数组展开为可变参数列表,具体分两种场景处理:
场景1:数组包含所有参数(固定参数+可变参数)
如果你的数组里已经包含了方法需要的第一个固定String参数,以及后续所有可变参数,只需拆分数组后传递:
示例代码
// 定义目标方法 def targetMethod(first: String, others: String*): Unit = { println(s"固定参数:$first") println(s"可变参数:${others.mkString(", ")}") } // 包含所有参数的数组 val paramArray = Array("初始值", "参数1", "参数2", "参数3") // 传递方式:提取第一个元素作为固定参数,剩余元素用:_*展开 targetMethod(paramArray(0), paramArray.drop(1): _*)
场景2:数组仅对应可变参数部分
如果数组只是用来填充方法的可变参数部分,第一个固定参数单独指定,直接在数组后加: _*即可:
示例代码
// 仅包含可变参数的数组 val varargsArray = Array("可变参数A", "可变参数B") // 传递方式:固定参数单独传,数组用:_*展开 targetMethod("自定义固定值", varargsArray: _*)
关键说明
: _*是Scala的特殊语法,它会告诉编译器将数组的元素逐个拆解,当作方法的可变参数列表来处理,而不是把整个数组作为单个参数传入。
内容的提问来源于stack exchange,提问作者User_qwerty
相关产品推荐
相关产品推荐

