我是一個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