swift学习

最近开始学swift,记录一些和oc差异比较大的地方

  1. if判断的条件语句必须是表达式

    var a = "a"
    if  a {
        print(a)
    }
    

    以上代码要报错,要写成

    var a: String? = "a"
    if let b = a {
        print(a)
    }
    

    因为赋值并非一定成功,就存在bool的结果

  2. 函数调用的时候在参数名前加 “_” ,在调用时可以不用显示指定参数名

    func person(_ name : String, age:Int) {
        print("name : \(name) age: \(age)")
    }
    
    person("lily", age:12)
    
  3. 让函数返回多个参数,使用元组

    func person(_ name : String, age:Int) -> (a:String,b:Int) {
    print("name : \(name) age: \(age)")
        return ("name is \(name)",age*2)
    }
    
    let p = person("lily", age: 14)
    print(p.a)
    print(p.b)
    
  4. 函数带有可变参数,函数还可以嵌套,跟js太像了
    这点就让swift比oc方便太多了,在方法传参的时候可以像js一样省去后面的参数传递,而去使用设置的默认值。就比如初始化方法,oc就要自己写多个方法,然后他们最终都去调一个参数最多的那个初始化方法,参数可选就方便多了。

  5. 类定义和对象初始化

    class Person {
        var name: String
        var age: Int
        
        init(name: String) {
            self.name = name
            self.age = 0
        }
        
        func info() {
            print("person")
        }
    }
    
    let p = Person(name:"lily")
    p.info()
    
  6. 函数、方法、类、枚举和结构体支持泛型

  7. 闭包表达式

    { (parameters) -> returnType in
        statements
    }
    

你可能感兴趣的:(swift学习)