一. Swift簡介
Swift從2010年開始開發(fā),直到2014年的蘋果WWDC上進行發(fā)布,Swift1.0.在2015年的蘋果WWDC上講Swift2.0開源,至今已經(jīng)到達Swift3.0,由于Swift的開源,Google將考慮使用Swift語言進行Android端程序的開發(fā).
語言排行可以根據(jù):http://www.tiobe.com 進行參考.
二. 聲明變量和常量
Swift中聲明變量的時候,不需要制定變量的類型,系統(tǒng)會根據(jù)開發(fā)人員輸入的類型,匹配到變量的基本類型.
變量使用var關(guān)鍵字進行修飾例如
var int_var = 1;
常量使用let關(guān)鍵字進行修飾例如:
let a = "Carson";
在Swift中";"可加可不加.
在Swift中,字符串的函數(shù):
var string_var = "This is";
// 字符串拼接
string_var += "Carson";
// 字符串中的字符刪除
string_var.removeAtIndex(string_var.startIndex.advancedBy(2));
// 指定位置添加字符
string_var.insert("C", atIndex: string_var.startIndex.advancedBy(2));
// 指定位置添加字符串
string_var.insertContentsOf("ABCD".characters, at: string_var.startIndex.advancedBy(7));
注意:Swift中不存在隱式轉(zhuǎn)換,即:低精度變量不可以直接賦值給高精度.需要進行強制類型轉(zhuǎn)換.
注Swift重的強制類型轉(zhuǎn)換:
var int_var = 23;
var double_var = Double(int_var);
// 判斷字符串是否為空
string_var.isEmpty;// 為bool類型,true與false兩個值
var int_value = 12;
print("\(int_value)"); // Swift中的原樣輸出
三. 數(shù)組和字典
Swift中使用變量聲明的數(shù)組均為可變數(shù)組,不存在不可變數(shù)組,并且在數(shù)組初始化的時候,可以指定數(shù)組中元素的類型.或者,不指定數(shù)組中的元素類型,可以隨意的將各種類型的元素存放在數(shù)組中.
Swift中的數(shù)組使用源碼:
// 不定元素類型的數(shù)組
var array_var_1 = ["haha",23,"haha",true,23.0];
// 指定元素類型的數(shù)組:字符串?dāng)?shù)組
var array_var_2:Array = Array<String>();
// 整型數(shù)組
var array_var_3 = [1,2,3,2,1,12,23,12,3];
// 數(shù)組排序
var array_var_4 = array_var_3.sort();
// 數(shù)組最大值
array_var_3.maxElement();
// 數(shù)組最小值
array_var_3.minElement();
Swift中的字典與PHP中的字典類似,為鍵值對,直接賦值給數(shù)組的對象就可以完成.
Swift中的字典使用源碼:
// 不指定字典的鍵-值類型
var dictionary_var_1 = ["name":"Carson","age":23,"gender":"Male"];
// 指定字典中的鍵-值類型
var dictionary_var_2:Dictionary<String,String> = ["name":"Carson"];
// 增加鍵值對
dictionary_var_2["gender"] = "Male";
// 通過鍵值刪除鍵值對
dictionary_var_2.removeValueForKey("gender");
// 通過鍵值的索引進行刪除鍵值對
dictionary_var_2.removeAtIndex(dictionary_var_2.indexForKey("gender")!);
四. 元組
元組是Swift中獨有的一種數(shù)據(jù)格式,是一個可以返回多個值的數(shù)據(jù)格式.在聲明的時候使用"()"聲明,元組中的元素可以通過下標去訪問,也可以通過鍵值去訪問.
// 注意在元組中的鍵值不需要加""號
// 不指定元素類型類型的元組
var status_1 = (name:"Carson",gender:23);
// 指定元素類型的元組
var status_2:(name:String,gender:Int) = ("Leo",23);
// 從元組中取值(鍵取值)
print(status_1.name);
// (下標取值)
print(status_1.0);
元組中還以存放數(shù)組字典等類型.
五. 循環(huán)結(jié)構(gòu)
Swift中的循環(huán)結(jié)構(gòu)有三種分別為repeat-while,while,for三種結(jié)構(gòu),其中repeat-while結(jié)構(gòu)與其他語言中的do-while結(jié)構(gòu)一致(至少執(zhí)行一次).
循環(huán)輸出1~100示例源碼
// repeat-while循環(huán)
var i = 1;
repeat {
print(i);
i++;
} while(i < 101);
// while循環(huán)
var j = 1;
while (j < 101) {
print(j);
j++;
}
// 普通for循環(huán)
for (var i = 1; i < 101; i++) {
print(i);
}
// for in循環(huán)...運算符 與..<運算符
// ... 為閉區(qū)間,為[1,100]
for s in 1 ... 100 {
print(s);
}
// ..< 為左閉右開區(qū)間,為[1,100)
for s in 1 ..< 100 {
print(s);
}
擴充內(nèi)容,使用for-in遍歷數(shù)組,字典獲取其中的元素.
// for-in 遍歷數(shù)組
var array = ["haha",23,"haha",true,23.0];
for s in array {
print(s);
}
// for-in 遍歷字典
var dictionary = ["Name":"Carson","Gender":"Male"];
for (key,value) in dictionary {
print(key,value);
}
六. 分支結(jié)構(gòu)
Swift中的分支結(jié)構(gòu),與其他語言相同,if與if-else結(jié)結(jié)構(gòu),還有switch-case結(jié)構(gòu).
if-else結(jié)構(gòu)示例源碼:
// 判斷字符串是否為空,為空的話輸出為空,不為空則數(shù)組字符串.
var string_var = "ABCDEFG";
if (string_var.isEmpty) {
print("is null!");
} else {
print(string_var);
}
switch-case結(jié)構(gòu)示例源碼:
注意:在Swift中,case():中的參數(shù)為以為字符串,或者表達式類型.不僅僅局限于Int類型.使用約束條件的時候使用關(guān)鍵字where類似于SQL語句.并且,Swift中不需要添加break關(guān)鍵字,默認添加上了關(guān)鍵字break,若想使用成為像刪除了break關(guān)鍵字的狀態(tài),讓代碼順序執(zhí)行,則需要使用語言所提供的fallthrough關(guān)鍵字.
// 聲明一個10個元素的整型數(shù)組,使用switch-case判斷奇數(shù)則輸出奇數(shù),為偶數(shù)則輸出偶數(shù)
var array_int_var:Array<Int> = Array();
var count = 10;
for (var i = 0; i < count; i++) {
array_int_var.append(random() % 100 + 1);
}
for s in array_int_var {
switch (s) {
case 1 ... 30:
print(s,"為[1,30]之間的數(shù)");
fallthrough;
case s where s % 2 == 0:
print(s,"為偶數(shù)!");
case s where s % 2 != 0:
print(s,"為奇數(shù)!");
default:
print("未知");
}
}
七. 枚舉
在C語言中,枚舉類型將枚舉名與一個整型值相對應(yīng),而在Swift中,不必要給每一個枚舉類型給一個確定的值,若給值,不簡單局限于整型值,還可以為整型值,字符串,字符,浮點等.
示例源碼:
// enum (枚舉名稱):(枚舉值類型) { case (枚舉名稱) = (枚舉值) }
enum Direction:String {
case East = "東"
case West = "西"
case North = "北"
case South = "南"
}
// 獲取得到枚舉值(直接通過點語法得到的是枚舉的名稱,使用.rawValue為枚舉值,.hashValue為枚舉值在枚舉中的index)
print(Direction.South.hashValue);
八. 函數(shù)
Swift中的函數(shù)也與C語言一樣,也分為四種函數(shù),無返回值無參數(shù),有返回值無參數(shù),無返回值有參數(shù),有返回值有參數(shù).函數(shù)必須先定義后使用.
示例源碼:
// 無返回值無參數(shù)
func method_1() -> Void {
print("我是無返回值,無參數(shù)的函數(shù)!");
}
// 函數(shù)調(diào)用
method_1();
// 無返回值有參數(shù)
func method_2(s:String) -> Void {
print(s);
}
// 函數(shù)調(diào)用
method_2("我是無返回值,有參數(shù)的函數(shù)!");
// 有返回值無參數(shù)
func method_3() -> (String) {
return "我是有返回值,無參數(shù)的函數(shù)!";
}
// 函數(shù)調(diào)用
print(method_3());
// 有返回值有參數(shù)
func method_4(s:String) -> (String) {
return s + "啦啦啦!";
}
// 函數(shù)調(diào)用
print(method_4("我是有返回值,有參數(shù)的函數(shù)!"));
在Swift中函數(shù)可以進行嵌套聲明與其他語言不同,嵌套在內(nèi)部的函數(shù)則成為內(nèi)部函數(shù),其作用范圍,僅在外部函數(shù)中.
示例源碼:
func outMethod() -> Void {
func inMethod() -> Void {
print("我是內(nèi)部函數(shù)!");
}
print("我是外部函數(shù)!");
// 內(nèi)部函數(shù)調(diào)用
inMethod();
}
// 外部函數(shù)調(diào)用
outMethod();
使用函數(shù)修改實參的值的時候,借助關(guān)鍵字inout,即將實參的地址作為參數(shù)傳遞給函數(shù),進行運算.
示例源碼:
// 使用函數(shù)的方式,將a的值更改為20;
var a = 10;
func add(inout b:Int) -> Void {
b += 10;
}
// 函數(shù)調(diào)用
add(&a);
print(a);