swift - swift中常用關(guān)鍵字

swift中常用關(guān)鍵字
  • **用作聲明的關(guān)鍵字: **

classdeinit店量、enumextension旱爆、func舀射、importinit怀伦、let脆烟、protocol房待、static邢羔、structsubscript桑孩、typealias拜鹤、var

  • 用作語句的關(guān)鍵字

breakcase流椒、continue准夷、default贯钩、do瞧毙、else六敬、fallthroughif安岂、infor帆吻、return域那、switchwherewhile

  • 用作表達(dá)和類型的關(guān)鍵字:

as次员、dynamicType败许、newis淑蔚、super市殷、selfSelf刹衫、Type醋寝、__COLUMN____FILE__带迟、__FUNCTION__音羞、__LINE__

  • 特定上下文中被保留的關(guān)鍵字:

associativitydidset仓犬、get嗅绰、infixinout搀继、left窘面、mutatingnone叽躯、nonmutating财边、operatoroverride险毁、postfix制圈、precedenceprefix畔况、rightset鲸鹦、unownedunowned(sale)跷跪、unowned(unsafe)馋嗜、weakwillset


關(guān)鍵字作用 :

class : 用來聲明一個(gè)類
enum : 用來聲明一個(gè)枚舉
init : 相對于類的釋構(gòu)方法的修飾吵瞻。
deinit : 相對于類的釋構(gòu)方法的修飾葛菇。
對于類的構(gòu)造和釋構(gòu)在swift 中需要使用關(guān)鍵詞來修飾,而很多高級語言并不需要特別的指定橡羞,便C++ 只需要類名與構(gòu)造函數(shù)名相同就可以眯停,不需要額外的關(guān)鍵詞。
extension : 擴(kuò)展.類似于OC的categories.
1. Swift 中的可以擴(kuò)展以下幾個(gè):
2. 添加計(jì)算型屬性和計(jì)算靜態(tài)屬性
3. 定義實(shí)例方法和類型方法
4. 提供新的構(gòu)造器
5. 定義下標(biāo)
6. 定義和使用新的嵌套類型
7. 使一個(gè)已有類型符合某個(gè)接口
let : 聲明一個(gè)常量. 類似于const
protocol : 協(xié)議.也可以叫接口.這個(gè)往往在很多高級語言中不能多重繼承的情況下使用協(xié)議是一個(gè)比較好的多態(tài)方式卿泽。
static : 聲明靜態(tài)變量或者函數(shù)
struct : 聲明定義一個(gè)結(jié)構(gòu)體
subscript : 下標(biāo)索引修飾.可以讓class莺债、struct、以及enum使用下標(biāo)訪問內(nèi)部的值
typealias : 為此類型聲明一個(gè)別名.和 typedef類似.
break : 跳出循環(huán).一般在控制流中使用,比如 for . while switch等語句
case : switch的選擇分支.
continue : 跳過本次循環(huán),繼續(xù)執(zhí)行后面的循環(huán).
in : 范圍或集合操作,多用于遍歷.
fallthrough : swift語言特性switch語句的break可以忽略不寫,滿足條件時(shí)直接跳出循環(huán).fallthrough的作用就是執(zhí)行完當(dāng)前case,繼續(xù)執(zhí)行下面的case.類似于其它語言中省去break里,會繼續(xù)往后一個(gè)case跑齐邦,直到碰到break或default才完成的效果.

switch integerToDescribe {  
case 1, 3, 5, 7, 11, 13, 17, 19:  
    description += " a prime number, and also";  
    fallthrough      // 執(zhí)行到此并不跳出循環(huán),而是繼續(xù)執(zhí)行case5
case 5:  
    description += " an integer"    // 執(zhí)行到這一步,跳出循環(huán)
default :  
    description += " finished"  
}  

where : 用于條件判斷,和數(shù)據(jù)庫查詢時(shí)的where 'id > 10'這樣功能. swift語言的特性.OC中并沒有.

let yetAnotherPoint = (1, -1)  
switch yetAnotherPoint {  
case let (x, y) where x == y:  
println("(\\(x), \\(y)) is on the line x == y")  
case let (x, y) where x == -y:  
println("(\\(x), \\(y)) is on the line x == -y")  
case let (x, y):  
println("(\\(x), \\(y)) is just some arbitrary point")  

當(dāng)switch的條件滿足where 后面的條件時(shí)椎侠,才執(zhí)行語句。
is & as : is一般用于對一些變量的類型做判斷.類似于OC中的isKindClass. as 與強(qiáng)制轉(zhuǎn)換含義雷同.
is Example:

for view : AnyObject in self.view.subviews  
{  
    if view is UIButton  
    {  
        let btn = view as UIButton;  
        println(btn)  
    }  
}  

dynamicType : 獲取對象的動(dòng)態(tài)類型,即運(yùn)行時(shí)的實(shí)際類型,而非代碼指定或編譯器看到的類型
__COLUMN__: 列號,
** __FILE__**:路徑,
__FUNCTION__: 函數(shù),
__LINE__ : 行號

[圖片上傳失敗...(image-e6d1f9-1522739666241)]

associativity: 運(yùn)算符的結(jié)合性
inout : inout作為函數(shù)聲明時(shí),引用傳值的關(guān)鍵字措拇。但是在調(diào)用的時(shí)候引用的是地址,所以在引用的時(shí)候要加上 &,例如:

func test(inout a :Int , inout b :Int){  // 函數(shù)內(nèi)相關(guān)操作 
}
var  num1 = 3
var  num2 = 10
test(&num1,&num2)

willSet 和 didSet: willSet 和 didSet的作用是對賦值過程前后附加額外的操作
可以看做是捕獲狀態(tài)然后做操作,在將要賦值的時(shí)候和已經(jīng)賦值的時(shí)候做相 關(guān)操作
mutating : 作用:寫在func前面,以便于讓func可以修改struct和protocol的extension中的成員的值我纪。 如果func前面不加mutating,struct和protocol的extension中的成員的值便被保護(hù)起來,不能修改
class var: 在swift中對于enum和struct來說支持用static關(guān)鍵字來標(biāo)示靜態(tài)變量,
但是對于class成員來說丐吓,只能以class var的方式返回一個(gè)只讀值浅悉。例如:

struct SomeStructure { 
static var storedTypeProperty = "Some value." 
static var computedTypeProperty: Int { // return an Int value here 
  }
}
enum SomeEnumeration { 
static var storedTypeProperty = "Some value." 
    static var computedTypeProperty: Int {
       // return an Int value here 
    }
}
class SomeClass { 
      class var computedTypeProperty: Int { 
       }
}

這樣其實(shí)很好的區(qū)分了struct和class的功能,
不像C# 抓來一個(gè)隨便用汰蜘,但相對于oc來講其實(shí)是弱化了界限仇冯,
如果你想在class中搞一個(gè)非只讀的靜態(tài)變量出來,可以和struct進(jìn)行配合族操。
convenience : convenience用來進(jìn)行方便的初始化苛坚,就相當(dāng)于構(gòu)造函數(shù)重載。
對于class來講色难,默認(rèn)或指定的初始化方法作為所謂的Designated初始化泼舱。
若重載的初始化需要調(diào)用Designated初始化則將它作為convenience初始化,在方法前要加上convenience關(guān)鍵字枷莉。

class Figure{  
       var name:String! 
       var nikname:String? 
       init(){   
          name = "John" 
       } 
      convenience init(name:String!,nikname:String!) {
           self.init() self.name = name self.nikname = nikname
      }
    }

precedence : 運(yùn)算的優(yōu)先級娇昙,越高的話優(yōu)先進(jìn)行計(jì)算。swift 中乘法和除法的優(yōu)先級是 150 笤妙,加法和減法的優(yōu)先級是 140 冒掌,這里我們定義點(diǎn)積的優(yōu)先級為 160 ,就是說應(yīng)該早于普通的乘除進(jìn)行運(yùn)算蹲盘。
unowned, unowned(safe), unowned(unsafe):無宿主引用股毫。
infix: 表示要定義的是一個(gè)中位操作符,即前后都是輸入
defer: 用來包裹一段代碼召衔,這個(gè)代碼塊將會在當(dāng)前作用域結(jié)束的時(shí)候被調(diào)用铃诬。這通常被用來對當(dāng)前的代碼進(jìn)行一些清理工作,比如關(guān)閉打開的文件等苍凛。
可以在同一個(gè)作用域中指定多個(gè) defer
代碼塊趣席,在當(dāng)前作用域結(jié)束時(shí),它們會以相反的順序被調(diào)用醇蝴,即先定義的后執(zhí)行宣肚,后定義的先執(zhí)行。
guard : 當(dāng)某些條件不滿足的情況下悠栓,跳出作用域.

func testFunc(input:Int) {
         guard input < 10 else  {
               print("Input must < 10") 
               return
          }
          print("Input is \\(input)")}
          testFunc(1)
          testFunc(11)

與if用法一樣霉涨,但是作用與if相反.相比if來說,guard有一個(gè)好處:如果不使用return,break,continue,throw跳出當(dāng)前作用域弧呐,編譯器會報(bào)錯(cuò).所以,對那些對條件要求十分嚴(yán)格的地方嵌纲,guard是不二之選。guard也可以使用可選綁定(Optional Binding)也就是 guard let 的格式

func testMathFunc(input:Int?){
    guard let _ = input else  { 
         print("Input cannot be nil") 
         return
      }
}
 testMathFunc(nil)

PS: set腥沽、get 逮走、new、self今阳、super师溅、none、if 盾舌、for墓臭、return文中沒提到的就不一一介紹了。沒提到的都是最基本的或者我不知道的或者不常用的關(guān)鍵字,后面接觸到新的再繼續(xù)記錄.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妖谴,一起剝皮案震驚了整個(gè)濱河市窿锉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膝舅,老刑警劉巖嗡载,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仍稀,居然都是意外死亡洼滚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門技潘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遥巴,“玉大人,你說我怎么就攤上這事享幽〔” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵琉闪,是天一觀的道長迹炼。 經(jīng)常有香客問我,道長颠毙,這世上最難降的妖魔是什么斯入? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蛀蜜,結(jié)果婚禮上刻两,老公的妹妹穿的比我還像新娘。我一直安慰自己滴某,他們只是感情好磅摹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布滋迈。 她就那樣靜靜地躺著,像睡著了一般户誓。 火紅的嫁衣襯著肌膚如雪饼灿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天帝美,我揣著相機(jī)與錄音碍彭,去河邊找鬼。 笑死悼潭,一個(gè)胖子當(dāng)著我的面吹牛庇忌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舰褪,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼皆疹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了占拍?” 一聲冷哼從身側(cè)響起略就,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晃酒,沒想到半個(gè)月后残制,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掖疮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年初茶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浊闪。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恼布,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搁宾,到底是詐尸還是另有隱情折汞,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布盖腿,位于F島的核電站爽待,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翩腐。R本人自食惡果不足惜鸟款,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茂卦。 院中可真熱鬧何什,春花似錦、人聲如沸等龙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罐栈,卻和暖如春黍衙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荠诬。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工们豌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浅妆。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像障癌,于是被迫代替她去往敵國和親凌外。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355