我正在尝试解决可选项,假设我有以下课程:
class Contact {
var displayName:String
init(displayName:String) {
self.displayName = displayName
}
}
class Contacts {
func create(displayName:String) -> Contact {
return Contact(displayName: displayName)
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,Contact 类有一个字段 displayName,但该值在初始化时可以为零。
所以要初始化这个类,我通常会这样做:
let contact = Contact(displayName: "Test Name")
Run Code Online (Sandbox Code Playgroud)
但相反,我也希望能够做到这一点:
let contact = Contact()
Run Code Online (Sandbox Code Playgroud)
或者
let contact = Contacts().create()
Run Code Online (Sandbox Code Playgroud)
您可以将 init 参数设为可选参数String?
,并使用默认值 nil
:
class Contact {
var displayName: String?
init(displayName: String? = nil) {
self.displayName = displayName
}
}
let contact1 = Contact()
let contact2 = Contact(displayName: "John")
Run Code Online (Sandbox Code Playgroud)
同样适用于Contacts
该类:
class Contacts {
func create(displayName: String? = nil) -> Contact {
return Contact(displayName: displayName)
}
}
let contacts = Contacts()
let contact3 = contacts.create()
let contact4 = contacts.create("Mary")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1439 次 |
最近记录: |