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()
未完待续......