2017-05-28 38 views
5

में खालीअरे() का उपयोग क्या है, मैं कोटलिन में emptyArray() सीख रहा था, लेकिन मैं इसमें मान निर्दिष्ट नहीं कर सकता (जो स्पष्ट है) और न ही मैं इसका आकार निर्धारित कर सकता हूं। कोटलिन में emptyArray का उपयोग क्या है?कोटलिन

+0

* लेकिन मैं * उस में मान निर्दिष्ट नहीं कर सकते हैं, आप कैसे सरणी बना रहे हैं? –

+0

var array = blankArray () –

+0

और आप 'सरणी' को मान असाइन करने का प्रयास कैसे कर रहे हैं? –

उत्तर

0

blankArray() फ़ंक्शन आकार 0 की खाली सरणी देता है। यह कोई पैरामीटर नहीं लेता है (न ही आकार, न तो तत्व)। आप असाइनमेंट ऑपरेशंस में इसे रैवल्यू के रूप में उपयोग कर सकते हैं। आप पूर्व-मौजूदा सरणी में सभी मानों को डंप करने के लिए रिक्त सरणी का उपयोग कर सकते हैं और इसका आकार 0 पर सेट कर सकते हैं नोट: नल की सरणी लौटने से खाली खाली करना बेहतर है, क्योंकि यह कोई शून्य बिंदु अपवाद नहीं बनाएगा आगे के संचालन में।

var array=arrayOf(1,2,3,4,5); 
array = emptyArray() //The array datais dumped and size is set to 0; 
array = arrayOf(0,1,2) 
4

विधियों और Maps आदि के लिए इसके समकक्षों के समान, ये विधियां आसान हैं जब आप एक विधि को कॉल कर रहे हैं जो तर्क के रूप में सरणी/संग्रह लेता है, लेकिन आप किसी भी तत्व को प्रदान करने की आवश्यकता नहीं है वह संग्रह आप या तो एक नई खाली सरणी/संग्रह को तुरंत चालू कर सकते हैं या सहायक तरीकों में से एक का उपयोग कर सकते हैं।

यदि उपरोक्त उपयोग केस आपके परिदृश्य में बहुत आम है, तो आप मददगारों का उपयोग करके स्मृति को सुरक्षित कर रहे हैं क्योंकि हमेशा एक ही उदाहरण को नए उदाहरण बनाने के बजाय पुन: उपयोग किया जाता है। अन्यथा यह मुख्य रूप से "वाक्यविन्यास कैंडी" है जो आपके कोड को और अधिक पठनीय और समझने में आसान बनाता है।

0

Arrays निश्चित आकार कंटेनर हैं। emptyArray() फ़ंक्शन 0 लंबाई की सरणी बनाता है, और आप वास्तव में इसके साथ बहुत कुछ नहीं कर सकते हैं। आप इसमें कुछ भी स्टोर नहीं कर सकते हैं, और आप इसका आकार बदल नहीं सकते हैं।

एक सामान्य उपयोग केस जहां आपको खाली सरणी की आवश्यकता होती है, वह उस संपत्ति के लिए डिफ़ॉल्ट मान के रूप में होगी जो बाद के बिंदु पर एक अलग सरणी पर सेट की जाएगी। यह डिफ़ॉल्ट रूप से उस संपत्ति में null को संग्रहीत करने से बेहतर हो सकता है, क्योंकि जब आपका कोड सरणी का उपयोग करता है तो आपको संभावित null मान को संभालने से निपटने की आवश्यकता नहीं है। उदाहरण के लिए, आप एक खाली सरणी पर सुरक्षित रूप से फिर से सक्रिय कर सकते हैं।


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

class NumberHolder { 

    var numbers: Array<Int> = emptyArray() 

    fun printNumbers() { 
     numbers.forEach { println(it) } 
    } 

} 

इस वर्ग के उपयोग कुछ इस तरह दिखेगा:

val nh = NumberHolder() 
nh.printNumbers() // prints nothing 
nh.numbers = arrayOf(1, 2, 3) 
nh.printNumbers() // prints 1, 2, and 3 on separate lines 
4

ऐसे मामलों में जहां आपके पास खाली सरणी पर वापस आने के लिए चाहते हैं या खाली सूची उदाहरण के लिए:

return someInputArray?.filterNotNull() ?: emptyArray() 

इस मामले अगर मैं एक मान्य इनपुट सरणी है में, मैं null मूल्यों को फ़िल्टर, अन्यथा यदि स्रोत सरणी था null मैं एक खाली सरणी लौट आते हैं। इसलिए null के बजाय हमेशा एक सरणी वापस आती है। कोटलिन में नलिका सूचियों या सरणी के चारों ओर गुजरने से खाली सूचियां और सरणी शायद अधिक आम हैं।

तो हाँ, यह खाली है और आप इसे जोड़ नहीं सकते हैं, ठीक उसी प्रकार जब कोई JVM सरणी आवंटित नहीं हो जाती है।