Swift語法 where關鍵字詳解

2021-08-11 14:38:57 字數 1184 閱讀 1982

在swift語法裡where關鍵字的作用跟sql的where一樣, 即附加條件判斷。

1、 在集合遍歷時使用where, 條件為真時執行**塊, 為假時不執行**塊。

let array = [0, 1, 2, 3, 4, 5, 6]

//使用switch遍歷

array.foreach

}//使用for in遍歷

for value in array where value > 2

for (index, value) in array.enumerated() where index > 2 && value > 3

輸出:

預設值

預設值預設值

預設值後半段

後半段後半段34

56下標:4, 值:4

下標:5, 值:5

下標:6, 值:6

2、在補充異常的do/catch裡使用

3、 協議使用where, 只有基類實現了當前協議才能新增擴充套件。 換個說法, 多個類實現了同乙個協議,該語法根據類名分別為這些類新增擴充套件, 注意是分別(以類名區分)!!!

protocol someprotocol 

class a: someprotocol

}class b

//基類a繼承了someprotocol協議才能新增擴充套件

extension someprotocol where self: a

}//反例,不符合where條件

extension someprotocol where self: b

}let obja = a()

let objb = b() //類b沒實現someprotocol, 所有沒有協議方法

obja.showparama() //輸出1

小結: where關鍵字可以用在集合遍歷、switch/case、協議中; swift3時if let和guard場景的where已經被swift4的逗號取代, 例如 if let a=param, a>10(前者需要判斷是否為nil,後者相當於where條件)

where 關鍵字用法

where子句 where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。1.介面約束。例如,可以宣告乙個泛型類 mygenericclass 這樣,型別引數 t就可以實現 icomparable介面 public class mygenericclass t where t...

語法 關鍵字

資料型別 基本資料型別 四種整數型別 byte short int long 兩種浮點數型別 float double 一種字元型別 char 一種布林型別 boolean 引用資料型別 類,陣列,介面.取值範圍通過靜態常量獲取,不需要記憶 基本資料型別轉型原 大容量 小容量,需要強制轉換符,可能造...

c 學習之關鍵字where

where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。1.介面約束。例如,可以宣告乙個泛型類 mygenericclass,這樣,型別引數 t 就可以實現 icomparable介面 public class mygenericclasswhere t icomparab...