scala - 数组 ("one", "two").mkString (":") 在方法返回 WrappedArray 中定义,而不是字符串

标签 scala methods

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/

相关文章:

java - 多种方法

scala - 如何在宏中重用定义 (AST) 子树?

scala - 在 Scala 中实现类型类实例定义的更好方法

java - 通过 JRI 从 Java 在 R 中创建 data.frames

algorithm - 使用会计法摊销的时间成本

java - 根据变量四舍五入到一定数量的小数位的方法

java - 以相同名称上传并更新到 Alfresco

Ruby 知道 'myvar' 是 myvar 中的一个变量 = 0 如果 false

spring - Akka Futures + Spring MVC 延迟结果 + tomcat 7.+

scala - 从 Heroku 上正在 Play 的文件中读取