scala

时间:2018-05-09 14:14:57

标签: scala

我有一个构建如此路径的函数:

def generatePath(arg1: String, arg2: String, arg3: String* = null) = {
    Array(arg1, arg2, arg3).mkString("/")
}

该函数应返回如下内容:

generatePath("data", "g1")
"data/g1"

generatePath("data", "g1", "hello")
"data/g1/hello"

generatePath("data", "g1", "hello", "world", "yes")
"data/g1/hello/world/yes"

val additionalPaths: Array[String] = Array[String]("yahoo", "awesome")
generatePath("data", "g1", additionalPaths: _*)
"data/g1/yahoo/awesome"

我无法弄清楚如何让它发挥作用。我确实希望它能够省略arg3,arg3可以使用任意数量的参数,或者是一个扁平的Seq。

1 个答案:

答案 0 :(得分:2)

只需删除默认值即可。 String*也允许零长度列表。

def generatePath(arg1: String, arg2: String, arg3: String* ) = {
    Array(arg1, arg2, arg3.mkString("/")).mkString("/")
}

println(generatePath("1", "2"))
println(generatePath("1", "2", "3"))
println(generatePath("1", "2", "3", "4"))