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>
Run Code Online (Sandbox Code Playgroud)
我期待一个String
返回,但我看到一个WrappedArray
. 为什么?
如果我想返回一个字符串,应该如何定义函数?
我在您的joinWith
函数中看到的唯一问题是您将变量参数转换为数组的方式。结果Array(values)
有一个类型Array[Seq[String]]
- 我怀疑这是你想要的。这完全没有必要。参数values
已经传递Seq
给你了。你可能打算写values.mkString(separator)
吗?
WrappedArray
您看到的文本是mkString
将Array
值为的内部转换Array("one", "two")
为字符串的结果。你没有得到一个类型的值WrappedArray
(这甚至是不可能的,因为你已经明确地输入了你的函数来返回 a String)
,你会得到一个带有值的字符串WrappedArray(...)
归档时间: |
|
查看次数: |
121 次 |
最近记录: |