Swift Array Slice
发布时间:2020-12-14 06:51:17 所属栏目:百科 来源:网络整理
导读:1.相遇 有个业务需求,把表格中的数据整合到一个数组中,如下 Name Age Item1 Item2 Item3 Country Jack 21 32 43 null China Tom 23 83 67 75 US 整合后的结果是这样 [ { " Name ": "Jack" ," Age ": 21 ," score ": [ { " Item1 ": 32 },{ " Item2 ": 43 }
1.相遇有个业务需求,把表格中的数据整合到一个数组中,如下
整合后的结果是这样 [
{
"Name": "Jack","Age": 21,"score": [ { "Item1": 32 },{ "Item2": 43 } ],"Country": "China" },{
"Name": "Tom","Age": 23,"score": [ { "Item1": 83 },{ "Item2": 67 },{ "Item3": 75 } ],"Country": "US" }
]
有个中间的状态,就是把一条记录整合出来之后,取中间的几个元素作为一个整体,所以需要把中间的几个数据切片到一个新的数组中。 2.对于切片数组的 subscript ,你了解多少?一个简单例子let array = ["A","B","C","D"]
let slicedArray = array[1..<3]
print(slicedArray.count) // 2
print(slicedArray[0]) // error
WHY?明明数组中有两个元素,但是为什么用subscript访问,却报错呢? let slicedArray String = slicedArray.reduce("start: ") { (acc,item) -> String in
"(acc)(item)"
}
print(slicedString) // start: BC
很明显这个”数组”中是有数据的呀,怎么就是取不出来呢? 3.startIndex & endIndexslicedArray 的 startIndex 和 endIndex 是多少呢? print(slicedArray.startIndex) // 1 instead 0
print(slicedArray.endIndex) // 3
所以,在用[0]访问slicedArray的时候,其实是越界的 out of bounds !!!! 4.怎么解决这个问题不去详细的解释为什么,这个跟swift对数组的设计理念相关,copy-on-write,目的之一提高性能
5.参考文献
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |