標籤:
下面為一些swift 2.0 的基本文法,寫在playground中,每次swift版本跟新的時候,開啟瞅瞅,就可以對比出哪裡發生了修改。
內容包括:01變數&常量 02分支 03迴圈 04字串 05數組 06字典 07函數
01變數&常量
//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/*: let 常量 var 變數 * 自動`推導`,能夠根據右邊的代碼,推匯出變數的準確類型*/let x = 100// 常量一旦設定數值,就不能再次修改//x = 300var y = 200y = 300print(x + y)/*: swift 對資料類型要求異常嚴格 * 整數的預設類型是 Int(long 64位) * 小數的預設類型是 Double (OC 中使用比較多的是 CGFloat) * swift 中任何時候,都不會做 `隱式轉換`,如果要對不同類型的資料進行計算,必須要自己轉換*/let i = 10let j = 8.5//let k = i + jlet iNum = i + Int(j)let dNum = Double(i) + jlet size = CGSizeMake(100, 100)let w = CGFloat(j) + size.width
02分支
//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"let i = 50/*: 1. 條件不需要括弧 2. {} 不能省略*/if i > 20 { print("OK")}/*: * OC 和 C 中非零即真 * swift 中邏輯值只有兩個 true / false*/if i == 50 { print("OK")}// 三目,文法和 OC 基本一樣let b = i < 20 ? 10 : 80/** 可選項(Optional) ? 表示變數可以有值,也可以沒有值 * convenience init? 建構函式,? 表示不一定能夠執行個體化出對象 * `!` 表示程式員告訴編譯器對象一定有值,編譯能夠通過 * 如果運行時,沒有值,就`崩潰`*/let url = NSURL(string: "http://www.baidu.com")//如果不確定url 真的有值,增加一個 ifif url != nil { let request = NSURLRequest(URL: url!)}print(url)// 判斷對象是否有值 - 增加了 if ,能夠保證進入 {} 代碼,url1 一定有值的if let url1 = NSURL(string: "http://www.baidu.com/s?wd=zhang") { let request = NSURLRequest(URL: url1)}
03迴圈
//: Playground - noun: a place where people can playimport UIKitfor var i = 0; i < 10; i++ { print(i)}/*: swift * 0~9 其中 0..<10 不能有空格*/for i in 0..<10 { print(i)}// 0~10for i in 0...10 { print(i)}// 不關心下標,可以使用 _ 省略for _ in 0..<10 { print("hello world")}
04字串
//: Playground - noun: a place where people can playimport UIKit/*: Swift 中使用 String 是一個結構體,效率會高,支援遍曆 OC 的 NSString,是一個對象 * Swift 中,String 和 NSString 之間的轉換很容易*/var str = "我要飛的更高"// swift 2.0 中遍曆字元for c in str.characters { print(c)}// 字串拼接let i = 1let rect = CGRectMake(0, 0, 100, 100)str = str + "\(i)" + "\(rect)"// 拼接字串的時候,一定記住如果是可選項,要特別注意,帶上 Optionalvar x: Int?x = 10let str1 = "\(x!)"// 格式let frmString = String(format: "%02d:%02d:%02d", arguments: [11, 1, 59])/*: 如果使用 Range 的時候,最好用 NSString*/// 跟原來的字串一模一樣var subStr = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex))print(subStr)// 從哪裡開始,到哪裡結束subStr = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, 3), end: advance(str.startIndex, 6)))print(subStr)let myStr: NSString = strlet myStr1 = str as NSStringmyStr.substringWithRange(NSMakeRange(0, 3))
05數組
import UIKitvar str = "Hello, playground"/*: 數組定義 []*/let array = ["zhangsan", "lisi"]// 遍曆for str in array { print(str)}print(array[0])print(array[1])// 不能向不可變數組新增內容//array.append("wangwu")/*: 可變 var 和 不可變 let * OC 中的數組,可以存放任意類型的對象*/// array1 的類型 [String],自動推導,只允許存放字串var array1 = ["xiaohua", "xiaocao"];// array2 的類型 [NSObject],可以存放`任意對象`// 在 swift 中,數字也可以直接當成對象存放在數組,不需要`轉換`var array2 = ["xiaohua", "xiaocao", 123];array1.append("laozhang")array2.append(100)/*: 數組的定義*/// array3 是一個僅允許存放字串的數組,定義類型var array3: [String]// 對 array3 進行執行個體化,在此之前,不允許操作array3 = [String]()array3.append("laowang")// 數組的合并array3 += array1// 必須是相同類型的才能夠合并// 提示:在 swift 開發中,通常數組中儲存的物件類型,都是一樣的!//array3 += array2// 數組的刪除array3.removeAtIndex(2)array3array3 += array1print(array3.count)// 清空數組 keepCapacity 是否保持容量array3.removeAll(keepCapacity: false)// 新增內容 // 如果向數組中追加元素,超過了容量,會直接在現有容量基礎上 * 2// OC 執行個體化可變數組,最好指定容量for i in 0..<16 { array3.append("hello - \(i)") print(array3[i]) print(array3.capacity) }
06字典
//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/*: 定義字典 [] let 不可變 var 可變*/// [String : NSObject] - 類型最常見// JSON 的資料格式,key 是 String// [key: value]var dict = ["name": "張三", "age": 18]dict// 如果 key 不存在,會建立dict["title"] = "boss"dict// 如果 key 存在,會覆蓋dict["name"] = "lisi"dict/*: 字典的遍曆 k, v 可以隨便寫,前面是 key,後面是 value*/for (vv, kk) in dict { print(vv + "--- \(kk)")}/*: 合并字典*/// 1. 定義字典var dict1: [String: NSObject]dict1 = [String: NSObject]()dict1["nickname"] = "老王"dict1["age"] = 80// 2. 合并-如果存在會覆蓋,如果沒有會建立for (k, v) in dict1 { dict[k] = v}dict
07函數
import UIKitvar str = "Hello, playground"//參數及傳回值,取消了1.2中的#func sum(num1 a: Int, num2 b: Int) -> Int{ return a+b}sum(num1: 10, num2: 20)func prinnnnt(printtt a: Int) -> Void { print(a)}prinnnnt(printtt: 10)
swift 2.0基本文法