def joinWith(separator: String, values: String*): String = { | Array(values).mkStr-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:09:39 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com