iOS Swift-基本语法

一、常量与变量

  let声明常量(在整个生命周期只允许赋值一次)
  var声明变量
         //不允许再次赋值,会报错
        let a = 1
            a = 10
        //可以先声明类型再赋值
        let b : Int
            b = 10

        //let声明的常量不要求在编译期间确定 c在整个编译期间可以一直改变导致d无法确定,只要保证用之前赋值一次就行
        var c = 1
        let d = c

  使用let 和 var 要么赋值要么明确声明对象的类型,在使用前必须要赋值

二、基本数据类型

Bool、Int、Float、Double
String、数组[T]、字典[T1 : T2]、元组

1.字符串操作

       //闭区间...
       //开区间..<
       let strEN = "hello world"
       let strCN = "你好世界"

       //拼接
       let str10 = strEN + strCN
       print(str10)

       //截取
       let str20 = strEN.prefix(2)
       let str21 = strEN.suffix(2)

       let startIndex = strEN.index(strEN.startIndex, offsetBy: 2)
       let endIndex = strEN.index(strEN.startIndex, offsetBy: -2)
       let str22 = strEN[startIndex...endIndex]
       print(str20, str21, str22)

2.数组操作

let arr = [1, 1, 2]
        var arrM = [7, 8, 9, 10, 11, 12, 13]
        var arrM1 = ["4", "5", "6"]

        //增
        arrM.append(2)
        print("增\(arrM)")

        arrM.insert(100, at: 2)
        print("插入\(arrM)")

        //删
        arrM.remove(at: 0)
        print("删除\(arrM)")

        //改
        arrM[2] = 1000
        print("改\(arrM)")

        //查
        let num = arr[2]
        print("查\(num)")

//遍历
        //1、forin遍历 带下标
        for index in 0..<arr.count {
            print(arr[index]) // 1 1 2
        }

        //2、forin遍历
        for item in arr {
            print(item) // 1 1 2
        }

        // 3、enum block遍历:同时拿下标和元素(元组接收)
        for (index, item) in arr.enumerated() {
            print(index, item)
        }

        // 4、反向遍历数组,for-in直接拿数据内元素
        for item in arr.reversed() {
            print(item) // 2 1 1
        }

        // 5、反向遍历数组,enum block遍历:同时拿下标和元素(元组接收):必须先enumerated,后reversed
        for (index, item) in arr.enumerated().reversed() {
            print(index, item)
        }

3.字典操作

//注意字典无序
        let dic = ["age": 18, "name":9]
        var dicM:[String:Any] = ["age": 18, "name":"zfc"]

        //增
        dicM["height"] = 1.88
        print("增\(dicM)")

        //删  字典无序 通过removeAtIndex删除会导致问题
        dicM.remove(at: dicM.index(dicM.startIndex, offsetBy: 1))
        print("删index:\(dicM)")

        dicM.removeValue(forKey: "age")
        print("删key:\(dicM)")

        //改
        dicM["height"] = 1.70
        print("改:\(dicM)")

        //查
        let hegit = dicM["height"]
        print("查:\(dicM)")

        // 同时拿key和value(元组接收) 字典无序enumerated()无意义
        for (key, value) in dicM {
            print(key, value)
        }

4.元组类型

let tuple = ("张三", 18, 1.88)
        print(type(of: tuple)) // (String, Int, Double)
        print(tuple.0) // 张三
        print(tuple.1) // 18
        print(tuple.2) // 1.88

        // 像字典一样使用元组,只不过元组的语法糖是个小括号()
        var tuple1 = (name: "张三", age: 18, height: 1.88)
        print(tuple1.name) // 张三
        print(tuple1.age) // 18
        print(tuple1.height) // 1.88

        //应用场景
        //1.给多个变量赋值
        let (name, _, height) = ("张三", 18, 1.88)

        //2.作为函数的返回值,来实现多返回值的效果
        func fn() -> (name: String, age: Int, height: Double) {
            return (name: "张三", age: 18, height: 1.88)
        }

5.函数

    //函数定义格式
    func 函数名(函数的参数) -> 函数的返回值 {
        函数的执行体
    }

    //函数可选参数与必选参数
    // num1必选参数,num2可选参数
    func sum(num1 : Int, num2 : Int = 2) -> Int {
        return num1 + num2;
    }
    print(sum(num1: 11)) // num1必须得传,num2可以不传,结果为13
    print(sum(num1: 11, num2: 22)) // num1必须得传,num2也可以传,结果为33

    func sum(_ num1 : Int, _ num2 : Int = 2) -> Int {
        return num1 + num2;
    }
    print(sum(11)) // 11
    print(sum(11, 22)) // 33

6.可选?

var age:Int? //所有可选项类型的变量的默认值都是nil
        //?可选类型:表示变量 age 允许为nil
        //! 可选变量age后面跟表示强制解包,前提是可选变量age不为nil,不然会造成崩溃

        //可选项解包(三种方式)
        //1.判断可选变量age是否为nil,不为nil再进行强制解包
        if age != nil { // 判断一下可选项变量age是不是nil
            print(age!)
        } else {
            print("age为nil")
        }

        //2.可选项绑定解包(if let/var、guard let/var)
        if let age = age {
            // 临时常量age的作用域仅限于这个大括号,并且已经是解包之后的数据了
            print(age)
        } else {
            // 临时常量age的作用域不包含这个大括号
            print("age为nil")
        }

        //guard作用域不再自己的大括号中,而在外层大括号中
        guard var age = age else {
            return
        }

        var age1:Int?
        //3.小三目运算符解包??
        //如果??前面的可选项有值,那么就会自动解包后使用该值;如果??前面的可选项为nil,就使用??后面的值。
        let str2: Int = age1 ?? 0

7.闭包

    //普通闭包
    var closure = {(a:Int, b:Int) -> Int in
        return a + b
    }



    //尾随闭包,是一个被书写在函数调用括号外面的闭包表达式,使用尾随闭包增强函数的可读性
    func exe(a:Int, b:Int, closure:(Int, Int)->Int) {
        print(closure(a, b))

//        exe(a:100, b:1, closure:{a, b -> Int in return a + b})  //原始
//        exe(a:100, b:1, closure:{a, b -> Int in a + b})         //简化,去掉return
//        exe(a:100, b:1, closure:{$0 + $1})                      //简化,去掉a,b
//        exe(a:100, b:1, closure:+)                              //简化,直接用+
    }

    func exe1(closure:()-> Void) {
        print("测试");
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容