चेक करें: Type Properties
नोट
संग्रहीत उदाहरण गुण के विपरीत, आप हमेशा संग्रहीत प्रकार गुण एक डिफ़ॉल्ट मान देना चाहिए। ऐसा इसलिए है क्योंकि इस प्रकार के पास कोई प्रारंभिक नहीं है जो प्रारंभिक समय पर संग्रहीत प्रकार की संपत्ति को मान निर्दिष्ट कर सकता है।
संग्रहीत प्रकार की संपत्तियों को उनकी पहली पहुंच पर आलसी शुरू किया गया है। उन्हें केवल एक बार आरंभ करने की गारंटी है, भले ही एकाधिक धागे द्वारा एक्सेस किया गया हो, और आलसी संशोधक के साथ उन्हें चिह्नित करने की आवश्यकता नहीं है।
आपको हमेशा संग्रहीत प्रकार गुणों को एक डिफ़ॉल्ट मान देना होगा।
आपका कोड का अभाव एक डिफ़ॉल्ट मानmyString
के लिए, ऐसे मामलों में, स्विफ्ट यह एक डिफ़ॉल्ट nil
दे।
संग्रहीत प्रकार की संपत्तियों को उनकी पहली पहुंच पर आलसी शुरू किया गया है।
आप परीक्षण और देखते हैं कि संग्रहीत प्रकार गुण इस तरह की कुछ कोड के साथ initilized कर रहे हैं कर सकते हैं:
func ZeroGenerator() -> Int {
print(#function)
return 0
}
func ThreeGenerator() -> Int {
print(#function)
return 3
}
func NilGeneartor() -> String? {
print(#function)
return nil
}
struct Something {
static var myVariable = ZeroGenerator()
static let myConstant = ThreeGenerator()
static var myString: String? = NilGeneartor()
static func useStaticVar() {
print(#function)
myVariable = myConstant
myString = String(myVariable)
}
}
Something.useStaticVar()
आउटपुट:
useStaticVar()
ZeroGenerator()
ThreeGenerator()
NilGeneartor()
संकलक, निरंतर मूलभूत मूल्यों के लिए कुछ अनुकूलन कर सकते हैं, लेकिन अर्थात् कोई अंतर नहीं।
जब इसे initalized किया जाता है? जब कार्यक्रम चलता है? पहले किया गया FinishLaunchingWithOptions? इसके बाद? – Esqarrouth