如何在Scala中获取列表中的元素?

7 浏览
0 Comments

如何在Scala中获取列表中的元素?

在scala中如何获取List中索引为 i 的元素?

我尝试使用 get(i)[i],但两个都不起作用。搜索引擎只返回如何在列表中“查找”元素的结果。但是我已经知道元素的索引了!

这是无法编译的代码:

def buildTree(data: List[Data2D]):Node ={
  if(data.length == 1){
      var point:Data2D = data[0]  //Nope - does not work
  }
  return null
}

查看List api并没有帮助,因为我的眼睛只会晕。

admin 更改状态以发布 2023年5月23日
0
0 Comments

更安全的方法是使用lift,这样如果存在该值,您可以提取它,并且如果不存在,您可以优雅地失败。

data.lift(2)

如果列表不够长以提供该元素,则返回None,否则返回Some(value)。

scala> val l = List("a", "b", "c")
scala> l.lift(1)
Some("b")
scala> l.lift(5)
None

每当您执行可能以这种方式失败的操作时,使用Option非常好,可以让类型系统帮助确保您正在处理元素不存在的情况。

说明:

这是因为List的apply(其中糖化为圆括号,例如l(index))类似于一个部分函数,在列表具有元素的任何地方都定义。 List.lift方法通过基本上将结果包装在Option中将部分apply函数(仅对某些输入定义的函数)转换为普通函数(对任何输入定义)。

0
0 Comments

使用括号:

data(2)

但是你并不想经常这样做,因为链表需要时间来遍历。如果你想对一个集合进行索引,请使用Vector(不可变)或ArrayBuffer(可变),或者可能使用Array(它只是一个Java数组,但是同样使用(i)而不是[i]进行索引)。

0