Swift 3 结构体

2017-05-08  本文已影响20人  revon

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()

未完待续......

上一篇下一篇

猜你喜欢

热点阅读