窥探Swift之数组安全索引与数组切片

2019-03-26  本文已影响0人  nuannuan_nuan

本文摘自窥探Swift之数组安全索引与数组切片

前言:
通常我们对数组进行索引操作会考虑是否越界,通常的处理方法是对Array添加extention,然后做安全扩展。

// MARK: - 数组
extension Array {
    //数组安全索引
    subscript (safe index: Int) -> Element? {
        return (0..<count).contains(index) ? self[index] : nil
    }
}

另外如果我们想对数组进行多个索引操作可以这样做:

 //多索引操作
    subscript(i1: Int, i2: Int, rest: Int...) -> [Element] {
        get {
            var result: [Element] = [self[i1], self[i2]]
            for index in rest {
                result.append(self[index])
            }
            return result
        }
        
        set (values) {
            for (index, value) in zip([i1, i2] + rest, values) {
                self[index] = value
            }
        }
    }

接下来我们讲一下数组切片,这是swift引入的新概念

        var testArray = [10,20,30,40,50,60]
        var arraySlices = testArray[2...4]

数组切片需要注意的是:

let enumerate = arraySlices.enumerated()
        dump(enumerate)
        for a in enumerate {
            print("a=\(a),a.0=\(a.0),a.1=\(a.1)")
        }
上一篇下一篇

猜你喜欢

热点阅读