Swift基本語法入門大全

1.常量和變量

常量用let修飾,定義之后值不以修改,變量用var修飾,定義之后值可以修改。

        let x = 5
        let y = 10.5
        var z = 15
        z = 20
        // 1.自動推導 常量/變量的類型會根據(jù)右側代碼的執(zhí)行結果,推導對應的類型
        print(x,y,z)
        // 2.不同類型之間不能直接進行計算,需要作轉換
//        let a = 10
//        let b = 0.5
//        print(a + Int(b))
        let a :Double = 10
        let b = 0.5
        print(a + b)

2.可選項

使用Optional或者?,表示該常量/變量可能有值,也可能沒有值。

        // 1.定義可選項用 `Optional` 或者 `?`
        let x:Optional = 10
        let y:Int? = 20
        print(x)
        print(y)
        // 2.可選項參與計算的時候需要解包,使用 `!` 解包,從可選值中取出對應的非空值
        print(x! + y!)

3.邏輯分支

        let a = 5
        let b = 10
        // 1.條件語句可以省略(),但是必須加上{}
        if a > b {
            print("a > b")
        }else{
            print("a < b")
        }
        // 2.三目的寫法與OC基本一致
        a > b ?print("a > b"):print("a < b")

        // 3. ?? 是一個簡單的三目,如果有值,就使用值,如果沒值,就使用 ?? 后面的值
        let c :Int? = nil
        print(Int(b) + (c ?? 0))   // 10

if let / var

if let 連用,用來判斷對象的值是否為nil,{}中一定有值,不需要解包。
if var 連用,{}中可以對值進行修改。

       // 1.if let
        let oname:String? = "xiaoshayu"
        let oage:Int? = 18
        // 如果{}中沒有使用,可以用_代替
        if let _ = oname,
           let _ = oage{
            print(oname! + oage!.description)
        }
        
        // 2.if var
        if var name = oname,
            var age = oage{
            name = "jack"
            age = 20
            print(name + age.description)
        }

guard let

        // 1.guard let 保證變量/常量一定有值,沒有值則返回。
        let oname:String? = "xiaoshayu"
        let oage:Int? = nil//18
        guard let name = oname,
           let age = oage else{
                print("oname or oage is nil")
                return
        }
        // 2.程序運行到此,name和age一定有值
        print(name + age.description)

switch

        // switch
        // 1.可以針對任意類型的值進行分支,不再局限于整型(OC為整型)。
        // 2.不需要添加break,如果需要多值,用`,`隔開。
        // 3.每一個分支至少需要一條指令
        // 4.在分支中定義變量/常量時不需要加{}
        let num = "June"http://"January"
        switch num {
        case "January":
            let a = 31
            print("一月" + a.description + "天")
        case "February":
            print("二月")
        case "March":
            print("三月")
        case "April","May","June":
            print("第二季度")
        default:
            print("none")
        }

4.for循環(huán)

        // 0..<5,表示從0開始到5之間(不包含5)的數(shù)[0,5)
        // 0...5,表示從0開始到5之間(包含5)的數(shù)[0,5]
        for i in 0..<5 {
            print(i) // 0 1 2 3 4
        }
        print("-----")
        for i in 0...5{
            print(i) // 0 1 2 3 4 5
        }

5.字符串

        let str = "床前明月光"
        // 1.字節(jié)數(shù)
        // 每個漢字事3個字節(jié)
        print(str.lengthOfBytes(using: .utf8))// 15
        // 2.字符串的長度
        print(str.characters.count)// 5
        // 3. String轉化NSString,通過.length獲取長度
        let ocString = str as NSString
        print(ocString.length)
        // 4.字符串的遍歷
        for c in str.characters{
            print(c)
        }
        // 5. 字符串的拼接 \(常量/變量)
        let a = "疑是"
        let b = "地上霜"
        let c = "\(a)\(b)\(20)"
        print(c)
        // 6. 字符串的格式化
        let date = String(format:"%@年%@月%@日 %@:%@:%@", 
                          arguments:["2019","02","23","18","33","56"])
        print(date)
        print("字符串的截取---")
        // 7.字符串的截取
        let str2:String = "舉頭望明月,低頭思故鄉(xiāng)。"
        let subStr1 = str2.prefix(3) // 舉頭望
        let subStr2 = str2.suffix(4) // 低頭思故鄉(xiāng)
        let index1 = str2.index(str2.startIndex, offsetBy: 2)
        let index2 = str2.index(str2.startIndex, offsetBy: 8)
        let subStr3 = str2[index1...index2]
        
        print(subStr1) // 舉頭望
        print(subStr2) // 低頭思
        print(subStr3) // 望明月,低頭思

6.數(shù)組

        // 1.數(shù)組的定義 和 初始化 OC @[] Swift []
        // OC 可變數(shù)組 NSMutableArray 不可變 NSArray
        // Swift 可變數(shù)組 var 不可變 let
        var array1 = ["Jan","Feb","Mar","Apr","May","Jun"]
        print(array1)
        // 初始化 [類型]()
        var array2 = [String]()
        array2.append("a")
        print(array2)
        // 2.基本數(shù)據(jù)類型不需要包裝 OC @[@(1),@(2)]
        let array3 = [1,2,3,4,5]
        print(array3)
        // 3.數(shù)組的遍歷
        // a>按照下標遍歷
        for i in 0..<array1.count{
            print(array1[i])
        }
        print("for in 遍歷")
        // b>for in 遍歷
        for i in array1 {
            print(i)
        }
        print("enum 遍歷")
        // c>enum 遍歷 同時遍歷下標和內(nèi)容
        for e in array1.enumerated() {
            print("\(e.offset) \(e.element)")
        }
        print("enum 遍歷2")
        // d>enum 遍歷 同時遍歷下標和內(nèi)容
        for (index,value) in array1.enumerated() {
            print("\(index) \(value)")
        }
        print("反序遍歷")
        // e>反序遍歷
        for e in array1.reversed(){
            print(e)
        }
        // 4.數(shù)組添加元素 .append
        array2.append("b")
        array2.append("c")
        print(array2) // ["a", "b", "c"]
        // 5.數(shù)組修改元素
        array2[1] = "d"
        print(array2) // ["a", "d", "c"]
        // 6.數(shù)組刪除元素 .remove
        array2.remove(at: 2)
        print(array2) // ["a", "d"]
        // 7.數(shù)組的合并 保證兩個數(shù)組類型一致
        array1 += array2
        // ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "a", "d"]
        print(array1)

7.字典

        // 1.初始化一個空字典
        var dict1 = [String:AnyObject]()
        // 2.字典的定義 OC @{} Swift中同樣使用 []
        let dict2  = ["name":"小鯊魚","age":18] as [String : Any]
        print(dict2) // ["name": "小鯊魚", "age": 18]
        // 3.字典的添加元素 (有則更新鍵值對,沒有則添加)
        var dict3 = ["許嵩":"清明雨上","周杰倫":"告白氣球","鄧紫棋":"光年之外"] as [String:Any]
        dict3["張靚穎"] = "我的夢"
        print(dict3)
        // ["張靚穎": "我的夢", "許嵩": "清明雨上", "周杰倫": "告白氣球", "鄧紫棋": "光年之外"]
        dict3["許嵩"] = "有何不可"
        print(dict3)
        // ["張靚穎": "我的夢", "許嵩": "有何不可", "周杰倫": "告白氣球", "鄧紫棋": "光年之外"]
        // 4.字典元素的修改
        dict3.updateValue("倒數(shù)", forKey: "鄧紫棋")
        // ["張靚穎": "我的夢", "許嵩": "有何不可", "周杰倫": "告白氣球", "鄧紫棋": "倒數(shù)"]
        print(dict3)
        // 5.字典元素的刪除
        // a>通過dict3[key] = nil 的方式刪除
        dict3["鄧紫棋"] = nil
        print(dict3)
        // ["張靚穎": "我的夢", "許嵩": "有何不可", "周杰倫": "告白氣球"]
        // b>通過.removeValue的方式刪除
        dict3.removeValue(forKey: "張靚穎")
        print(dict3)
        // ["許嵩": "有何不可", "周杰倫": "告白氣球"]
        print("字典的遍歷 --- ")
        // 6.字典的遍歷
        // a>
        for e in dict3{
            print(e)
        }
        //(key: "許嵩", value: "有何不可")
        //(key: "周杰倫", value: "告白氣球")
        // b>
        for (key,value) in dict3{
            print("\(key) \(value)")
        }
        // 許嵩 有何不可
        // 周杰倫 告白氣球
        print("字典的合并 ---")
        // 7.字典的合并
        let dict4 = ["田馥甄":"小幸運"] as [String:Any]
        // 將dict4合并到dict3中
        for (key,value) in dict4{
            dict3[key] = value
        }
        print(dict3)
        // ["許嵩": "有何不可", "周杰倫": "告白氣球", "田馥甄": "小幸運"]

8.函數(shù)

    // 1.函數(shù)的定義格式: 函數(shù)名(形參列表)->  返回值類型
    func sum1(x:Int, y:Int) -> Int{
        return x + y
    }
    // 2.外部參數(shù):就是在形參前面加一個名字
    // 外部參數(shù)不會影響函數(shù)內(nèi)部的細節(jié),看起來更加直觀
    // 外部參數(shù)如果使用 _ ,在外部調(diào)用函數(shù)時會省略形參的名字
    func sum2(num1 x:Int, num2 y:Int) -> Int{
        return x + y
    }
    func sum3(_ x:Int, _ y:Int) -> Int{
        return x + y
    }
    // 3.函數(shù)的默認值
    // 通過給參數(shù)設置默認值,在調(diào)用的時候,如果不設定值的,使用默認值。
    func sum4(x:Int = 11, y:Int = 22) -> Int{
        return x + y
    }
    // 4.函數(shù)無返回值的三種寫法
    // a. func demo(){}
    // b. func demo() -> (){}
    // c. func demo() -> void{}

9.閉包

閉包類似于OC的block,但是比OC的block應用更廣,在Swift中函數(shù)時特殊的閉包。
閉包的使用場景:

  • 異步執(zhí)行回調(diào)
  • 控制器件回調(diào)
  • 自定義視圖回調(diào)
        // 閉包 格式:{(形參列表) -> 返回值類型 in 實現(xiàn)代碼}
        // 1.有參數(shù)有返回值的閉包
        let a = { (x: Int ,y: Int) -> Int in
            return x + y
        }
        print(a(5,5)) // 10
        // 2.有參數(shù)無返回值的閉包
        let b = {(x:Int?) -> () in
            print((x ?? 0))
        }
        b(100)
        // 3.無參數(shù)無返回值的閉包
        let c = {() -> () in
            print("無參數(shù)無返回值的閉包")
        }
        c()
        // 其中 ()->() in 可以省略 簡寫成 let c = { print("...")}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,131評論 2 9
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應用程序 ...
    大L君閱讀 3,425評論 3 25
  • YES 2014WWDC發(fā)布 常量和變量使用注意 在實際過程中,建議先定義常量,如果需要修改再改變?yōu)樽兞?更加安全...
    南馮閱讀 618評論 0 0
  • 基礎部分(The Basics) 當推斷浮點數(shù)的類型時,Swift 總是會選擇Double而不是Float。 結合...
    gamper閱讀 1,488評論 0 7
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,089評論 0 6

友情鏈接更多精彩內(nèi)容