发布于 2015-06-14 01:50:02 | 175 次阅读 | 评论: 0 | 来源: 网络整理
Swift 将为所有属性已提供默认值的且自身没有定义任何构造器的结构体或基类,提供一个默认的构造器。这个默认构造器将简单的创建一个所有属性值都设置为默认值的实例。
下面例子中创建了一个类ShoppingListItem
,它封装了购物清单中的某一项的属性:名字(name
)、数量(quantity
)和购买状态 purchase state
。
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()
由于ShoppingListItem
类中的所有属性都有默认值,且它是没有父类的基类,它将自动获得一个可以为所有属性设置默认值的默认构造器(尽管代码中没有显式为name
属性设置默认值,但由于name
是可选字符串类型,它将默认设置为nil
)。上面例子中使用默认构造器创造了一个ShoppingListItem
类的实例(使用ShoppingListItem()
形式的构造器语法),并将其赋值给变量item
。
除上面提到的默认构造器,如果结构体对所有存储型属性提供了默认值且自身没有提供定制的构造器,它们能自动获得一个逐一成员构造器。
逐一成员构造器是用来初始化结构体新实例里成员属性的快捷方法。我们在调用逐一成员构造器时,通过与成员属性名相同的参数名进行传值来完成对成员属性的初始赋值。
下面例子中定义了一个结构体Size
,它包含两个属性width
和height
。Swift 可以根据这两个属性的初始赋值0.0
自动推导出它们的类型Double
。
由于这两个存储型属性都有默认值,结构体Size
自动获得了一个逐一成员构造器init(width:height:)
。 你可以用它来为Size
创建新的实例:
struct Size {
var width = 0.0, height = 0.0
}
let twoByTwo = Size(width: 2.0, height: 2.0)