你是如何从scala中的List中获得索引 i 的元素的?
我试过 get(i)
和 [i]
- 什么都行不通 . 谷歌搜索只返回如何"find"列表中的元素 . 但我已经知道元素的索引了!
这是不编译的代码:
def buildTree(data: List[Data2D]):Node ={
if(data.length == 1){
var point:Data2D = data[0] //Nope - does not work
}
return null
}
看着List api并没有帮助,因为我的眼睛只是交叉 .
4 回答
使用括号:
但是你并不是真的想经常使用列表,因为链表需要时间来遍历 . 如果要索引到集合,请使用
Vector
(不可变)或ArrayBuffer
(可变)或可能Array
(这只是一个Java数组,除了再次使用(i)
而不是[i]
索引它) .更安全的是使用
lift
,以便您可以提取值(如果存在),如果不存在则优先失败 .如果列表不足以提供该元素,则返回None;如果列表不足,则返回Some(value) .
每当您执行可能以这种方式失败的操作时,最好使用Option并获取类型系统以帮助确保您正在处理元素不存在的情况 .
Explanation:
这是因为List的
apply
(仅仅是括号,例如l(index)
)就像是在列表中有元素的地方定义的部分函数 .List.lift
方法通过将结果基本包装在Option中,将部分apply
函数(仅为某些输入定义的函数)转换为普通函数(为任何输入定义) .为什么括号?
以下是书programming in scala的引用 .
下面是一些如何使用函数式编程样式拉出某个元素(在本例中为first elem)的示例 .
请使用括号()来访问列表元素list_name(索引)