如何在Scala中获取列表中的元素?
如何在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日
更安全的方法是使用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
函数(仅对某些输入定义的函数)转换为普通函数(对任何输入定义)。