scala> def joinWith(separator: String, values: String*): String = {
| Array(values).mkString(separator)
| }
joinWith: (separator: String, values: String*)String
scala> joinWith(":", "one", "two")
res0: String = WrappedArray(one, two) // shouldn't we get a String here?
scala> Array("one", "two").mkString(":")
res1: String = one:two // this works as expected but only like this
scala>
我期望返回一个 String
,但我看到了一个 WrappedArray
。为什么?
如果我想返回一个字符串,应该如何定义函数?
最佳答案
我在您的 joinWith
函数中看到的唯一问题是您将变量参数转换为数组的方式。 Array(values)
的结果有一个类型 Array[Seq[String]]
- 我怀疑这是你想要的。这根本没有必要。参数 values
已经作为 Seq
传递给您。您可能打算编写 values.mkString(separator)
吗?
您看到的 WrappedArray
文本是 mkString
将内部 Array
转换为 Array("one", "two")
到一个字符串。您没有获得类型为 WrappedArray
的值(这甚至是不可能的,因为您已明确键入函数以返回 String)
,您得到的字符串为一个值 WrappedArray(...)
关于scala - 数组 ("one", "two").mkString (":") 在方法返回 WrappedArray 中定义,而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944322/