在swift 2.0之後增加defer、guard、repeat、catch、rethrows、hrow、throws和try關鍵字,其中repeat關鍵字替代do - while循環中的do,即中repeat - while循環。而do關鍵字用于錯誤處理。catch、rethrows、throw、throws和try是錯誤處理關鍵字。
錯誤處理是swift 2.0之後增加新内容。
defer
guard
repeat
catch
rethrows
hrow
throws
try
======================================================
什麼是辨別符呢?
辨別符就是給變量、常量、方法、函數、枚舉、結構體、類、協定等由開發人員指定的名字。
其實,構成辨別符的字母是有一定規範的,swift中命名規則是:
區分大小寫,myname與myname是兩個不同的辨別符;
辨別符首字元可以以下劃線(_)或者字母開始,但不能是數字;
辨別符中其他字元可以是下劃線(_)、字母或數字。
例如: username、user_name、_sys_val、身高等為合法的辨別符,而2mail、room#和class為非法的辨別符。
==================================================
什麼是關鍵字呢?
關鍵字是類似于辨別符的保留字元序列,由語言本身定義好的,不能挪作他用,除非用重音符号(`)将其括起來。
swift語言常見的關鍵字有以下4種。
與聲明有關的關鍵字:class、deinit、enum等。
與語句有關的關鍵字:break、case、continue等。
表達式和類型關鍵字:as、catch、dynamictype、false等。
在特定上下文中使用的關鍵字:associativity、convenience、dynamic等。
swift中關鍵字是區分大小寫的,是以class和class是不同的,那麼class不是swift的關鍵字。
===============================================
使用var還是let?
在我們開發過程中啊什麼時候定義關鍵字為var,還是定義為let呢?
其實啊都能滿足我們的需求,那我們到底應該如何選擇?
例如:可以将圓周率π定義為let或var。
let π = 3.14159
var π = 3.14159
上面代碼編譯不會報錯。但是從業務邏輯層面講,π應該定義為常量(let)的,因為一方面常量(let)不能修改,另外在程式中使用常量(let)可以提高程式的可讀性。
有人說:原則上優先使用let,它有很多好處,可以防止程式運作過程中不必要的修改、提高程式的可讀性。特别是引用資料類型聲明時候經常采用let聲明,雖然在業務層面上并不是一個常量,而是防止程式運作過程中錯誤地修改它引用。
常量是辨別符的前面加上關鍵字let。常量其值在使用過程中不會發生變化的量,下面是聲明常量:
let _hello = "hello"
注意哦常量隻能在初始化的時候被指派,如果再次給_hello指派,
比如: _hello = "hello, world"
程式會報錯的
變量來了
變量是在辨別符的前面加上關鍵字var,聲明變量啦:
var scoreforstudent = 0.0
聲明double類型scoreforstudent變量,并且初始化為0.0。
如果在一個語句中聲明和初始化了多個變量,那麼所有的變量預設具有相同的資料類型(待驗證):
var x = 10, y = 20
在多個變量的聲明中,也能指定不同的資料類型哦:
var x = 10, y = true
其中x為整型,y為布爾型。
==================================================
在swift中,表達式有3種形式。
l 不指定資料類型
var a1 = 10
l 指定資料類型
var a1:int = 10
l 使用分号
var a1:int = 10; vara2:int = 20
在swift語言中,一條語句結束後可以不加分号也可以添加分号,但是有一種情況必須要用分号,那就是多條語句寫在一行的時候,需要通過分号來差別語句。
例如:
var a1:int = 10; vara2:int = 20;
二進制運算符:
+ 加 求和,還可用string類型,進行字元串連接配接操作
- 減 求差
* 乘 求積
/ 除 求商
% 取餘 求餘數
一進制運算符:
- 取反符号 取反運算
++ 自加一 先取值再加一,或先加一再取值
-- 自減一 先取值再減一,或先減一再取值
除了一些常用的運算符,還有一些其他的:
• 引用号(.):執行個體調用屬性、方法等操作符。
• 問号(?):用來聲明可選類型。
• 感歎号(!):對可選類型值進行強制拆封。
• 箭頭(->):說明函數或方法傳回值類型。
• 冒号運算符(:):用于字典集合分割“鍵值”對。
在swift中資料類型有那些呢?整型、浮點型、布爾型、字元、字元串這些類型是一定有的,其中集合、枚舉、結構體、類也是swift中的資料類型。元組是swift中特有的。
其他那些類型我們可能多少知道些或是聽說過。元組是在swift中有的,它是什麼呢?
它是一種資料結構,在數學中應用廣泛。在計算機科學中,元組是關系資料庫中的基本概念,元組表中的一條記錄,每列就是一個字段。是以在二維表裡,元組也稱為記錄。
現在使用swift文法表示student元組就是:
第一種寫法
("1001", "張三", 30, 90)
第二種寫法
(id:"1001", name:"張三", english_score:30, chinese_score:90)
在c、objective-c和java等其他語言中,整型之間有兩種轉換方法:
從小範圍數到大範圍數轉換是自動的;
從大範圍數到小範圍數需要強制類型轉換,有可能造成資料精度的丢失。
而在swift中這兩種方法是行不通的,需要通過一些函數進行顯式地轉換,代碼如下:
let historyscore:uint8 = 90
let englishscore:uint16 = 130
let totalscore = historyscore + englishscore //錯誤
程式就會有編譯錯誤,原因是historyscore是uint8類型,而englishscore是uint16類型,它們之間不能轉換。
兩種轉換方法:
一種是把uint8的historyscore轉換為uint16類型。由于是從小範圍數轉換為大範圍數,這種轉換是安全的。
代碼:
let totalscore = uint16(historyscore) + englishscore //是正确的轉換方法。
另外一種是把uint16的englishscore轉換為uint8類型。由于是從大範圍數轉換為小範圍數,這種轉換是不安全的,如果轉換的數比較大可能會造成精度的丢失。
let totalscore = historyscore + uint8(englishscore) //是正确的轉換方法。
本例中englishscore的值是130,這個轉換是成功的,如果把這個數修改為1300,雖然程式編譯沒有問題,但是會在控制台中輸出異常資訊。
整型與浮點型之間的轉換
整型與浮點型之間的轉換與整型之間的轉換類似:
let historyscore:float = 90.6
let englishscore:uint16 = 130
let totalscore = historyscore + englishscore //錯誤
let totalscore = historyscore + float(englishscore) //正确,安全
let totalscore = uint16(historyscore) + englishscore //正确,小數被截掉