iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

下標

之前有介紹過不同的資料型態,我們可以透過下標的方式,來獲取其中的元素。

var array = [1,2,3,4,5,6,7]
// 透過下標獲取陣列第三個元素,注意下標從零開始
array[2]

開發者也可以透過自定義的資料型態來賦予下標訪問的功能。

class MyArray {
    var array: Array<Int>
    init(param: Int...){
        array = param
    }
    // subscript是Swift用來定義下標功能的方法
    subscript(index: Int) -> Int{
        set{
            // 默認外界設置的值會以newValue為名稱傳入,開發者也可以自定義
            array[index] = newValue
        }
        get{
            return array[index]
        }
    }
}
var myArray = MyArray(param: 1,2,3,4,5)
// 透過下標進行訪問
myArray[2]
myArray[1] = 0

下標使用subscript來定義,與普通方法類似,參數和返回值分別作為下標和獲取下標所取的值,但是subscript實現部分和計算屬性比較像,必須實現一個get程式碼和一個可選的set方法,get用於使用下標取值,set用於下標設置值,因此subscript更像是計算屬性和方法的混合體,實際上下標訪問不只局限於一維下標,也可以改造成二維的。

class MyArray {
    var array: Array<Array<Int>>
    init(param: Array<Int>...){
        array = param
    }
    // subscript是Swift用來定義下標功能的方法
    subscript(index1: Int, index2: Int) -> Int{
        set{
            // 默認外界設置的值會以newValue為名稱傳入,開發者也可以自定義
            array[index1][index2] = newValue
        }
        get{
            var tmp = array[index1]
            return tmp[index]
            
        }
    }
}
var myArray = MyArray(param: [1,2,3],[3,4,5],[6,7,8])
// 透過下標進行訪問
// 訪問結構中第二個陣列第三個元素返回五
myArray[1.2]
// 設置第五個陣列中第三個元素的值
myArray[4,2] = 0
  1. 下標方法也可以只實現get,此時只可以透過下標來進行讀取動作,不可以進行設置動作。
  2. 下標方法中參數的個數和類型,開發者都可以根據需求自行定義,返回值的類型也可以自由定義,但有一點需要注意,下標的參數不可以設置為默認值,也不可以設置成input類型。

接下來,是構造方法的介紹


上一篇
Day20 Swift 屬性Property observers
下一篇
Day22 Swift 初始化
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言