我是 Swift 新手,我正在尝试使用具有可选属性的结构。我进行了相当多的搜索并得到了一些有用的东西,但感觉效率极低,所以想知道是否有更好/更易于管理的方法来实现我的目标。
我想使用 Structs 来表示一个企业,但我事先不知道任何特定企业可能具有哪些属性组合。这似乎意味着我必须为每个可能的参数组合创建一个 init()。
这是一个简化的例子(我有更多的属性):
import Foundation
struct Business {
let name : String
var web : String?
var address: String?
// just the business name
init(busName: String) {
self.name = busName
}
// business name + website
init(busName: String, website: String) {
self.name = busName
self.web = website
}
// business name + address
init(busName: String, address: String) {
self.name = busName
self.address = address
}
// business name + website + address
init(busName: String, website: String, address: String) {
self.name = busName
self.web = website
self.address = address
}
}
然后我可以像这样初始化类:
Business(busName: "Dave's Cafe", website: "http://www.davescafe.com")
Business(busName: "Sarah's Brewhouse", address: "41 Acacia Ave, Smalltown")
没有办法创建某种参数可选的 init() 吗?如果您能指出要搜索的术语或概念的方向,那就太好了。
最佳答案
使用默认值:
init(busName: String, website: String? = nil, address: String? = nil) {
self.name = busName
self.web = website
self.address = address
}
然后你可以这样调用init:
_ = Business(busName: "Foo")
_ = Business(busName: "Foo", website: "www.foo.bar")
_ = Business(busName: "Foo", address: "bar")
_ = Business(busName: "Foo", website: "www.foo.bar", address: "bar")
关于ios - 使用可选的存储属性快速初始化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553626/