我是一个Swift新手,我试图让我的头部使用具有可选属性的Structs。我做了很多搜索,并找到了一些可行的方法,但它感觉非常低效,所以想知道是否有更好/更易于管理的方式来实现我的目标。Swift使用可选的存储属性初始化Struct
我想用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( )参数是可选的?如果你能指出我的方向或概念来寻找那将是很棒的。
那些应该是'String?'而不是'String'。 – jtbandes
Thanks @dasdom我在类型之后尝试使用'?'(例如'... website:String?...',因为我认为使用该语法会自动将该值设置为零。不要试着明确地将值设置为零,我现在就试试吧 – James
是的,'String'或'String?'只是一个类型;它与默认值没有多大关系(只要我们'你可能已经有了一个String参数的默认值,比如'init(busName:String =“”)'虽然我认为option是正确的选择 – jtbandes