Swift 3 结构体

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

未完待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容