在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...