Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Kotlin में स्थिरांक क्या हैं और उन्हें कैसे बनाएं?

परिचय

Kotlin में ऐसे वेरिएबल जिनका मान प्रोग्राम में कभी नहीं बदलता, `const` कीवर्ड का उपयोग करके घोषित किए जाते हैं। ये कंपाइल-टाइम स्थिरांक होते हैं।

const के नियम

  • शीर्ष-स्तर, `object`, या `companion object` में घोषित होना चाहिए
  • केवल प्रिमिटिव टाइप्स और `String`
  • मान कंपाइल-टाइम पर ज्ञात होना चाहिए (कोई फ़ंक्शन कॉल नहीं)
  • कस्टम गेटर नहीं हो सकते
  • अंतर्निहित रूप से `val` होते हैं

विधि 1: शीर्ष-स्तरीय स्थिरांक (सबसे सरल)

// फ़ाइल: Constants.kt
const val APP_NAME = "MyApplication"
const val MAX_RETRY = 3
const val API_BASE_URL = "https://api.example.com"
const val DEFAULT_TIMEOUT_MS = 5000L

fun main() {
    println(APP_NAME)
    println("अधिकतम पुनर्प्रयास: $MAX_RETRY")
}

आउटपुट

MyApplication
अधिकतम पुनर्प्रयास: 3

विधि 2: Object Declaration में (नेमस्पेसिंग)

object AppConstants {
    const val VERSION = "1.0.0"
    const val BUILD_NUMBER = 42
    const val IS_DEBUG = true
}

object NetworkConstants {
    const val BASE_URL = "https://api.example.com"
    const val TIMEOUT = 30_000
    const val MAX_RETRIES = 3
}

fun main() {
    println("v${AppConstants.VERSION} (${AppConstants.BUILD_NUMBER})")
    println("API: ${NetworkConstants.BASE_URL}")
}

विधि 3: Companion Object में (क्लास-स्कोप्ड)

class User private constructor(val name: String) {
    companion object {
        const val ANONYMOUS_NAME = "Anonymous"
        const val MIN_NAME_LENGTH = 3
        const val MAX_NAME_LENGTH = 50
        
        fun create(name: String): User = User(name.trim())
    }
}

fun main() {
    println(User.ANONYMOUS_NAME)
    val user = User.create("  John  ")
    println(user.name)
}

विधि 4: एनोटेशन पैरामीटर्स के रूप में (केवल const val)

const val DEPRECATED_VERSION = "1.0"

@Deprecated("Use v2 API instead", ReplaceWith("apiV2()"))
@Target(AnnotationTarget.FUNCTION)
annotation class ApiVersion(val version: String)

// const val एनोटेशन में काम करता है
@ApiVersion(DEPRECATED_VERSION)
fun oldApi() {}

// val एनोटेशन में काम नहीं करेगा
// val runtimeVersion = "1.0"
// @ApiVersion(runtimeVersion) // कंपाइल त्रुटि
fun anotherApi() {}

const बनाम val - कब क्या उपयोग करें?

परिदृश्यउपयोग करेंउदाहरण
API कुंजी, कॉन्फ़िगरेशन मानconst val`const val API_KEY = "..."`
एनोटेशन पैरामीटर्सconst val`@Annotation(constVal)`
डेटाबेस कॉलम नामconst val`const val COL_ID = "id"`
रनटाइम पर गणना मानval`val hash = computeHash()`
ऑब्जेक्ट/संग्रह इंस्टेंसval`val list = listOf(1,2,3)`
लोकल वेरिएबलval`fun foo() { val x = 1 }`

आंतरिक कार्यप्रणाली

// Kotlin कोड
const val CONST_EXAMPLE = "Hello"

// Java समकक्ष (बाइटकोड में):
// public static final String CONST_EXAMPLE = "Hello";  // फील्ड + स्थिरांक मान एम्बेडेड

// बनाम val:
val VAL_EXAMPLE = "World"

// Java समकक्ष:
// private static final String VAL_EXAMPLE = "World";
// public static String getVAL_EXAMPLE() { return VAL_EXAMPLE; }  // गेटर

सर्वोत्तम अभ्यास

  1. शीर्ष-स्तर `const val` एप्लिकेशन-वाइड स्थिरांक के लिए
  2. Object declaration संबंधित स्थिरांकों के समूह के लिए (नेमस्पेसिंग)
  3. Companion object क्लास-विशिष्ट स्थिरांक के लिए
  4. नामकरण: `UPPER_SNAKE_CASE`
  5. `const val` का उपयोग करें जब भी संभव हो (प्रदर्शन, एनोटेशन संगतता)
  1. DNS लीक क्या हैं और उन्हें कैसे ठीक करें DNS लीक क्या हैं और उन्हें कैसे ठीक करें

    VPN जैसी पहचान-छिपाने वाली सेवा का उपयोग करते समय, यह सुनिश्चित करना अत्यंत महत्वपूर्ण है कि सभी बाहरी नेटवर्क ट्रैफिक VPN के एन्क्रिप्टेड टनल के माध्यम से भेजा जाए। ऐसा किए बिना, उपयोगकर्ता का वास्तविक IP पता लीक हो सकता है, जिससे उनका स्थान, ब्राउज़िंग जानकारी, और बाद में उनकी पहचान उजागर हो सकती

  1. Google Assistant रूटीन मास्टर करें: जल्दी सेटअप करने का तरीका Google Assistant रूटीन मास्टर करें: जल्दी सेटअप करने का तरीका

    Google Assistant रूटीन विशिष्ट वाक्यांश बोलने पर Google Assistant द्वारा किए जाने वाले स्वचालित क्रियाओं का एक सेट है। आप छह तैयार Google Assistant रूटीन में से एक का उपयोग करके इस सुविधा को बहुत कम प्रयास से अभी उपयोग करना शुरू कर सकते हैं। लेकिन यदि आप रचनात्मक होना चाहते हैं, तो आप कस्टम Google A

  1. सिसइंटर्नल्स अनावरण: विंडोज प्रशासन के लिए शक्तिशाली उपकरण सिसइंटर्नल्स अनावरण: विंडोज प्रशासन के लिए शक्तिशाली उपकरण

    क्या आपने कभी चाहा है कि आपके विंडोज कंप्यूटर पर आपका पूरा नियंत्रण हो? लगभग किसी भी विंडोज प्रक्रिया या एप्लिकेशन के अंदर देखने में सक्षम होना ही नहीं, बल्कि उन फाइलों और रजिस्ट्री प्रविष्टियों को रीयल-टाइम में देखना भी अविश्वसनीय है जिन्हें आपके एप्लिकेशन एक्सेस कर रहे हैं। सबसे प्रतिष्ठित और शक्त