作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字符串数组:
var z:Array[String] =Array("hand", "ball", "eye")
我想为 z 中的每个元素附加一个“s”,
我是 scala 的新手,我可以通过附加 's' 来打印它们:
z.foreach(arg =>println(arg +"s"))
但我正在寻找的实际上是将 z 中的所有元素更改为具有“s”。
最佳答案
取决于您所说的“更改 z 中的所有元素”是什么意思。数组是可变容器,因此理论上您可以就地更改数据,尽管这并不是真正的“scala 方式”,而且通常不是一个好主意:
z.indices.foreach(z(_)+="s")
更好的方法,更惯用和安全的方法是使用 map ,如其他答案中所述:
val newZ = z.map(_ + "s")
这将使用修改后的元素创建数组的副本,而原始元素保持不变。如果您的阵列非常大,这可能会变得令人望而却步,因为它需要将所有数据复制到一个新容器中。对于这种情况,最好使用迭代器,并将您的操作链接到一个序列中,这样只有最终结果才会具体化。例如:
val processedData = z.iterator
.map(_ + "s")
.filter(_.startsWith("foo"))
.map(_.substring(3))
.toArray
这对数组的内容执行了三个操作,但避免了在每个操作之后创建中间副本。
关于arrays - 如何在 Scala 中为数组中的每个元素附加一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399871/
我是一名优秀的程序员,十分优秀!