Swift 下標指令碼

2021-07-11 22:27:02 字數 1745 閱讀 6450

//: playground - noun: a place where people can play

import uikit

var str = "hello, playground"

//下標指令碼語法

/* 下標指令碼允許你通過在例項後面的方括號中傳入乙個或者多個的索引值來對例項進行訪問和賦值。語法類似於例項方法和計算型屬性的混合。與定義例項方法類似,定義下標指令碼使用subscript關鍵字,顯式宣告入參(乙個或多個)和返回型別。與例項方法不同的是下標指令碼可以設定為讀寫或唯讀。這種方式又有點像計算型屬性的getter和setter:

*/class someclass

set(newvalue)

}}//下面**演示了乙個在timestable結構體中使用唯讀下標指令碼的用法,該結構體用來展示傳入整數的n倍。

struct timestable

}let threetimestable = timestable(multiplier: 3);

print("3的6倍是\(threetimestable[6])");

/* 在上例中,通過timestable結構體建立了乙個用來表示索引值三倍的例項。數值3作為結構體建構函式入參初始化例項成員multiplier。

你可以通過下標指令碼來得到結果,比如threetimestable[6]。這條語句訪問了threetimestable的第六個元素,返回6的3倍即18。

注意:timestable例子是基於乙個固定的數學公式。它並不適合對threetimestable[someindex]進行賦值操作,這也是為什麼附屬指令碼只定義為唯讀的原因。

*///下標指令碼用法

/* 例如,swift 的字典(dictionary)實現了通過下標指令碼來對其實例中存放的值進行訪問操作。在下標指令碼中使用和字典索引相同型別的值,並且把乙個字典值型別的值賦值給這個下標指令碼來為字典設值:

*//**

注意:swift 中字典的附屬指令碼實現中,在get部分返回值是int?,上例中的numberoflegs字典通過附屬指令碼返回的是乙個int?或者說「可選的int」,不是每個字典的索引都能得到乙個整型值,對於沒有設過值的索引的訪問返回的結果就是nil;同樣想要從字典例項中刪除某個索引下的值也只需要給這個索引賦值為nil即可。

*/var numberoflegs = ["spider": 8, "ant": 6, "cat": 4] ;

numberoflegs["bird"] = 2 ;

print(numberoflegs);

//下標指令碼選項

/* 下標指令碼允許任意數量的入參索引,並且每個入參型別也沒有限制。下標指令碼的返回值也可以是任何型別。下標指令碼可以使用變數引數和可變引數,但使用寫入讀出(in-out)引數或給引數設定預設值都是不允許的。

乙個類或結構體可以根據自身需要提供多個下標指令碼實現,在定義下標指令碼時通過入參箇型別進行區分,使用下標指令碼時會自動匹配合適的下標指令碼實現執行,這就是下標指令碼的過載。

乙個下標指令碼入參是最常見的情況,但只要有合適的場景也可以定義多個下標指令碼入參。如下例定義了乙個matrix結構體,將呈現乙個double型別的二維矩陣。matrix結構體的下標指令碼需要兩個整型引數:

*/struct matrix

func indexisvalidforrow(row: int, column: int) -> bool

subscript(row: int, column: int) -> double

set

}}

swift 下標指令碼

下標指令碼 可以定義在類 class 結構體 structure 和列舉 enumeration 這些目標中,可以讓這些型別的例項通過快速訪問屬性和方法.subscript index int int set newvalue 通常下標指令碼是用來訪問集合 collection 列表 list 或序...

Swift之下標指令碼

下標指令碼 可以定義在類 class 結構體 structure 和列舉 enumeration 這些目標中,可以認為是訪問集合 collection 列表 list 或序列 sequence的快捷方式,使用下標指令碼的索引設定和獲取值,不需要再呼叫例項的特定的賦值和訪問方法。舉例來說,用下標指令碼...

swift學習 下標指令碼

定義 下標指令碼 可以定義在類 class 結構體 structure 和列舉 enumeration 這些目標中,可以認為是訪問物件 集合或序列的快捷方式,不需要再呼叫例項的特定的賦值和訪問方法。舉例來說,用下標指令碼訪問乙個陣列 array 例項中的元素可以這樣寫 somearray index...