我对 Scala 中一些非常基本的东西感到困惑。我正在读《Atomic Scala》这本书。我不是一个完整的编程初学者,但我所拥有的经验是相当表面的。没有实际的开发经验,只是修补字符串操作和那个级别的东西。
在本书中,其中一个练习(在参数化类型一节中)是定义一个方法,该方法将向量作为输入并给出一个列表作为输出,其中列表的元素与向量的元素相同。给定的向量可以是任意长度。
我不知道有什么方法可以在没有 for 循环的情况下做到这一点,并且没有将列表视为(至少在开始时)可变的。
这是我尝试过的:
def explicit(v:Vector[Double]):List[Double] = {
var l = List()
for (i <- v) {
l = l :+ i
}
l
}
Run Code Online (Sandbox Code Playgroud)
但第四行似乎有问题。它踢出一条错误消息。
我有一种感觉,你可以在没有 for 循环的情况下做一些很酷的事情,你可以直接说“val l = List(~~~在这里插入一些很酷的火箭或其他东西~~~)但是这本书没有”还没有涵盖这个,或者我只是还没有弄清楚。
正如你所看到的,我在这里处于非常基础的水平,所以请尽可能像我五岁那样解释它。;)
编辑补充:我向前看了一点,看起来像几章之后我将学习“地图”方法,如果我准确浏览,它将为这个问题提供解决方案。但那是书的后面。知道如何在没有地图的情况下完成吗?
List在 Scala 中是不可变的,“修改” aList实际上会产生List.
map是一个非常有用的功能,List但不会帮助您,它不会更改容器,只会更改包含的值。
我真的不明白你的运动的点,把一个Vector成一个List很简单,只要调用toList上Vector。
scala> val v= Vector(1,2,3)
v: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3)
scala> v.toList
res0: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
在第 1 条评论后编辑:是的,简单地调用一个练习是没有意义的toList:) 很难真正知道预期的是什么,章节/部分的主要主题是什么?
另一种方法是:List(Vector(1,2,3):_*)。@Rex Kerr 的回答也很好。
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |