swift之构造函数 #7

https://github.com/abaiweb/blog/issues/7

构造函数是使用类、结构体或枚举的实例之前的属性初始化的函数,通过自定义构造器来实现构造过程,这些构造器可以看做是用来创建特定类型新实例的特殊方法。swift构造函数没有返回值。主要工作是确保第一次的使用前完成正确的初始化工作。

栗子如下:

//: [Previous](@previous)

import Foundation

struct Student{
    
    var name : String
    
    init(){
        name = "xiaobai"
    }
    
}

var student = Student();

print("学生的名字:\(student.name)");


//: [Next](@next)

输出结果:学生的名字:xiaobai

注:swift 4.0 不支持println;

上面是结构体或类默认调用的构造器,我们也可以自定义构造函数,在函数中指定参数,对指定属性方法进行初始化。

栗子如下:

//: [Previous](@previous)

import Foundation

struct Student{
    
    var name : String? = nil //可选参数值
    
    init(){
        name = "xiaobai"
    }
    init( newname name1 : String ){//定义外部参数名字
        self.name = name1+"_hehe";
    }
    init( newname2 name2: String ){//定义外部参数名字
        self.name = name2+"_haha";
    }
    init( _ name3: String ){ //禁用外部参数
        self.name = name3+"_xixi";
    }
    init( name4: String ){ //外部参数和内部参数一样
        self.name = name4+"_huhu";
    }
    
}

var s = Student();
var s1 = Student(newname:"xiaohua");
var s2 = Student(newname2:"xiaomei");
var s3 = Student("xiaozou");
var s4 = Student(name4:"xiaoba");

print("学生的名字:\(s.name!)");
print("学生的名字:\(s1.name!)");
print("学生的名字:\(s2.name!)");
print("学生的名字:\(s3.name!)");
print("学生的名字:\(s4.name!)");


随便复习了 swift 外部参数和内部参数的具体定义。

输出结果:

学生的名字:xiaobai
学生的名字:xiaohua_hehe
学生的名字:xiaomei_haha
学生的名字:xiaozou_xixi
学生的名字:xiaoba_huhu

如果结构体或类所有属性都有默认值,同事没有自定义的构造器,那么会提供一个默认的构造器,这个默认构造器简单的创建一个构造将所有属性值都设置为默认的实例。

栗子:

class Student{
    var name : String?
    var sex = ""
    var age = 30
}

上面类所有的属性都是有默认值的,将会创建一个为所有属性赋值的构造器。(name是可选类型没有显示的赋值,它将默认设置为nil)

除了上述的构造器,结构体还有一种构造器 逐一成员构造器。 代码如下:

struct Student{
    var name = "xiaobai"
    var sex = ""
    var age = 30
}
var s = Student(name:"xiaobaibai",sex:"",age:90)

上面简单的讲述了swift种类和结构体的构造器的使用,如果更加详细了解构造器,请翻阅详细的书籍。