我不确定这是一个错误还是我对 Scala 的理解不够好。我今天在 REPL 中玩了一些列表功能。这是我所做的:
首先,我创建了一个列表:
scala> val myList = List(1.0, 2.0, 3.0)
myList: List[Double] = List(1.0, 2.0, 3.0)
接下来,我通过添加另一个双精度来创建另一个列表:
scala> val newMyList = 4.0 :: myList
newMyList: List[Double] = List(4.0, 1.0, 2.0, 3.0)
现在,当我在 newMyList 上询问 productArity (List.productArity) 时:
scala> print(newMyList.productArity)
2
它似乎仍然将第一个列表与另一个列表区别对待。这是预期的行为还是错误?
scala> print(newMyList.productElement(0))
4.0
scala> print(newMyList.productElement(1))
List(1.0, 2.0, 3.0)
注意,当尝试访问高于 0、1 的元素时,我得到一个 java.lang.IndexOutOfBoundsException。2 应该返回 2.0,3 应该返回 3.0,对吗?