美文网首页
Swift 3 结构体

Swift 3 结构体

作者: revon | 来源:发表于2017-05-08 14:17 被阅读20次

    swift中结构体,属于值类型,在swift中,Array, Dictionary, Set, Int, Float, Double, Bool, String,都是结构体
    声明结构体

    struct People{
        let name:String
        let age:Int
    }
    

    默认情况下,可以这样初始化

    let p1 = People(name: "ref", age: 12)//这个是系统默认的初始化方法,全参数初始化
    

    这里,也可以自己写一个初始化方法,注意,自己定义的init会覆盖系统的init

    struct People{
        let name:String
        let age:Int
        init(dic:Dictionary<String, AnyObject>) {
                name = dic["name"] as! String
                age = dic["age"] as! Int
        }
    }
    

    相应的初始化就是这样

    let p2 = People(dic: ["name" : "ref" as AnyObject, "age" : 12 as AnyObject])
    

    如果我们想自己写了之后,还可以全参数的初始化方法,那我们就需要自己再写一下,就像这样

     init(dic:Dictionary<String, AnyObject>) {
                self.name = name
                self.age = age
        }
    

    上边的init,没有返回值的,如果当我们不能保证初始化一定会正确,或者传入的参数处理会产生可选值,这时,就需要一个可以返回nil 的一个初始化,可以这样写

    init?(dic:Dictionary<String, AnyObject>) {
                name = dic["name"] as! String
                let ageNum = dic["age"] as! Int
                if(ageNum < 18) {
                    return nil
                }else{
                    age = ic["age"] as! Int
                }
        }
    

    这里,如果初始化age<18就返回nil
    给属性赋一个初始值,初始化就可以这样

    struct People{
        let name:String = "ref"
        let age:Int = 12
    }
    let p3 = People()
    

    结构体里,也可以写函数,可以这样

    struct People{
        let name:String = "ref"
        let age:Int = 12
        func detail(){
            print(self.name, self.age)
        }
    }
    let p3 = People()
    p3.detail()
    

    未完待续......

    相关文章

      网友评论

          本文标题:Swift 3 结构体

          本文链接:https://www.haomeiwen.com/subject/ghsmtxtx.html