gpt4 book ai didi

scala - 关于缩写 map 的困惑

转载 作者:行者123 更新时间:2023-12-04 22:45:30 27 4
gpt4 key购买 nike

我会想到以下代码:

val a = Array(1, 2, 3, 4, 5)
println(a.map(n => "x"))

可以简写为:
val a = Array(1, 2, 3, 4, 5)
println(a.map("x"))

但后者给了我下面的异常(exception)。为什么是这样?

java.lang.StringIndexOutOfBoundsException: String index out of range: 1 java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:658) at scala.collection.immutable.StringLike$class.apply(StringLike.scala:52) at scala.collection.immutable.WrappedString.apply(WrappedString.scala:33) at scala.collection.immutable.WrappedString.apply(WrappedString.scala:33) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.ArrayOps$ofInt.foreach(ArrayOps.scala:234) at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) at scala.collection.mutable.ArrayOps$ofInt.map(ArrayOps.scala:234)

最佳答案

Strings也是函数 Int => Char它将给定索引处的字符提取到字符串中。所以

a.map("x")

相当于
a.map(i => "x".charAt(i))
a的第一个元素是 1所以这将尝试在字符串 x 中找到索引 1 处的字符这是超出范围的,因此是异常(exception)。

如果你想要一个总是返回 "x" 的函数那么你可以使用 Function.const :
import Function.const
a.map(const("x"))

关于scala - 关于缩写 map 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673431/

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