के लिए इसे बदल से Swift Language Reference:
When a constant is declared at global scope, it must be initialized with a value.
आप केवल एक का आरंभीकरण स्थगित कर सकते हैं कक्षाओं/structs में निरंतर, जहां आप इसे टी में शुरू करने के लिए चुन सकते हैं वह कक्षा/संरचना के प्रारंभकर्ता।
"स्थिरता के मूल्य को संकलन समय पर ज्ञात करने की आवश्यकता नहीं है" का अर्थ निरंतर के मान को संदर्भित करता है। सी/उद्देश्य-सी में वैश्विक स्थिरता को एक मान असाइन करने की आवश्यकता होती है जिसे संकलक द्वारा गणना की जा सकती है (आमतौर पर 10
या @"Hello"
जैसे शाब्दिक)। निम्नलिखित ऑब्जेक्टिव-सी में अनुमति नहीं दी जाएगी:
static const int foo = 10; // OK
static const int bar = calculate_bar(); // Error: Initializer element is not a compile-time constant
स्विफ्ट में आप इस प्रतिबंध की जरूरत नहीं है:
let foo = 10 // OK
let bar = calculateBar(); // OK
संपादित करें:
मूल जवाब में निम्नलिखित बयान सही नहीं है:
You can only defer initialization of a constant in classes/structs, where you can choose to initialize it in the initializer of the class/struct.
एकमात्र जगह whe फिर आप स्थगित नहीं कर सकते वैश्विक दायरे (यानी। शीर्ष स्तर let
अभिव्यक्ति)। हालांकि यह सच है कि आप कक्षा/संरचना में प्रारंभिकता को रोक सकते हैं, यह एकमात्र जगह नहीं है।
func foo() {
let bar: Int
bar = 1
}
कैसे "के बारे में मूल्य संकलन समय पर निरंतर ज्ञात होने की आवश्यकता नहीं है "? – onmyway133
नहीं, ऐसा नहीं है, आप 'एक कॉन्स्टेंट = functionThatGeneratesARandomNumber() 'कर सकते हैं, लेकिन यह अभी भी उस बिंदु के बाद स्थिर है और आप इसे फिर से असाइन नहीं कर सकते हैं। – Jack
इसके अलावा, स्विफ्ट में स्थिरांक 'Int' जैसे शाब्दिक तक ही सीमित नहीं हैं। आपके पास स्थिर समय हो सकता है जो रन-टाइम पर बनाई गई वस्तु है। आपको याद रखने वाली एकमात्र चीज यह है कि इसे परिभाषित (निरंतर!) के बाद फिर से असाइन नहीं किया जा सकता है। – Jack