Avatar ·

Kotlin में गुणों की इनिशियलाइज़ेशन: by lazy या lateinit — क्या चुनें?

सभी को नमस्ते! मैंने अभी Kotlin सीखना शुरू किया है और एक समस्या का सामना किया। मैं एक छोटा एप्लिकेशन लिख रहा हूँ, और मुझे क्लास के कुछ गुणों को इनिशियलाइज़ करने की आवश्यकता है, लेकिन उनके मान तुरंत ज्ञात नहीं होते — उदाहरण के लिए, डेटा लोड होने के बाद या Android के `onCreate` में। मैं दो दृष्टिकोण जानता हूँ: `lateinit` और `by lazy`। लेकिन मैं समझ नहीं पा रहा हूँ कि कब किसका उपयोग करना है। यहाँ मेरे कोड का एक उदाहरण है: ```kotlin class MyActivity : AppCompatActivity() { private lateinit var userName: String private val userAge: Int by lazy { fetchUserAge() // यह विधि बाद में कॉल की जा सकती है } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) userName = "John" // lateinit इनिशियलाइज़ेशन } private fun fetchUserAge(): Int { return 25 } } ``` समस्या यह है कि यदि मैं `userName` के लिए `lateinit` का उपयोग करता हूँ, तो IDE चेतावनी देता है यदि मैं इसे `val` बनाने की कोशिश करता हूँ। जबकि `by lazy` केवल `val` के साथ काम करता है। मैंने यह भी सुना है कि `latei