前言
初学者在学习Swift语言时可能对于方法/函数里面的“构造方法”/“构造函数”有困惑。实际上不仅仅是Swift,包括例如Java,C#等OOP语言而言,其都具备构造方法且作用大体相同:都是为一个类赋予初始值。
示例代码
下面两种情形分为在编码时无init方法和具备init方法
1.无init方法
class Student{
var name: String?
var age: Int?
}
对于这种情况而言,该类在实例化时,编译器仅为其各个变量提供内存地址,但内存地址而言里面却空空如也,里面什么也没有,而此时若想显示地赋予类变量数值时须修改如下:
class Student{
var name: String = “Bob”
var age: Int = 18
}
但这种情况在实际开发时却不被待见:我们想要自由地赋予某个“Model”(数据模型,Java里面称之为JavaBean)而不是写死数据,那么我们就需要一种方法来在我们想要实例化某个“Model”时把该对象里面的属性赋予我们想要赋予的值。
2.具备init方法
class Student{
var name: String?
var age: Int?
init(name: String, age: Int){
self.name = name;
self.age = age;
}
}
上面的代码片段里虽然name和age也是有地址且地址里面为空,但具备的init方法里面传入两个参数:name和age(这里的两个参数不要与类变量混淆,这里是成员变量,使用时要用self关键字区分开),这两个参数把值赋予类变量,到此,当我们想要在业务里自由地赋予某个Model就自由地赋予的步骤便完成(系统先调用init方法把参数赋值给类变量等)。
总结
init的中文意思为“初始化”,字面理解就是当这东西出生时就赋予它一些条件,如果没有init方法,那么这个东西后天要修改一些属性就很困难。另外init方法是一种特殊的方法,它无返回值,可以重载,在一些语言里面,它是默认就具备的。