2016-06-02 7 views
60

मैंने हाल ही में const कीवर्ड के बारे में पढ़ा है, और मैं बहुत उलझन में हूं! मुझे इसके और val कीवर्ड के बीच कोई अंतर नहीं मिल रहा है, मेरा मतलब है कि हम दोनों को एक अपरिवर्तनीय चर बनाने के लिए उपयोग कर सकते हैं, क्या मुझे कुछ और याद आ रहा है?"const" और "val" के बीच क्या अंतर है?

+0

https://kotlinlang.org/docs/reference/properties.html#compile-time-constants – Michael

उत्तर

85

const एस संकलन समय स्थिरांक हैं। इसका अर्थ यह है कि उनके मूल्य को संकलन समय के दौरान असाइन किया जाना चाहिए, val एस के विपरीत, जहां इसे रनटाइम पर किया जा सकता है।

इसका मतलब है कि const एस किसी फ़ंक्शन या किसी भी क्लास कन्स्ट्रक्टर को असाइन नहीं किया जा सकता है, लेकिन केवल String या आदिम के लिए असाइन किया जा सकता है।

उदाहरण के लिए:

const val foo = complexFunctionCall() //Not okay 
val fooVal = complexFunctionCall() //Okay 

const val bar = "Hello world"   //Also okay 
+1

इस तरह कुछ के बारे में क्या: 'const val foo =" हैलो वर्ल्ड "' और 'वैल बार =" हैलो वर्ल्ड "'? क्या यह वही है? –

+2

@MathewHany, कम से कम बाइटकोड के संदर्भ में नहीं, देखें: http://stackoverflow.com/questions/37482378/static-data-in-kotlin/37485356#37485356 – hotkey

+0

मुझे लगता है कि 'const' मान केवल पूरी तरह से रेखांकित किए जाएंगे संकलन। –

9

बस लूका के जवाब में जोड़ने के लिए:

संकलन समय स्थिरांक

गुण संकलन समय पर जाना जाता है जिनमें से मूल्य में चिह्नित किया जा सकता है कॉन्स संशोधक का उपयोग कर संकलन समय स्थिरांक के रूप में। इस तरह के गुण निम्न आवश्यकताओं को पूरा करने के लिए की जरूरत है:

  • उच्च-स्तरीय या किसी वस्तु
  • या प्रकार स्ट्रिंग के एक मूल्य एक आदिम प्रकार
  • कोई कस्टम गेटर के साथ प्रारंभ की सदस्य

स्रोत: Official documentation

संबंधित मुद्दे