कोटलिन में खाली सरणी कैसे बनाएं?


93

मैं Array(0, {i -> ""})वर्तमान में उपयोग कर रहा हूं , और मैं यह जानना चाहूंगा कि क्या कोई बेहतर कार्यान्वयन है जैसे किArray()

इसके अलावा, अगर मैं उपयोग कर रहा हूं arrayOfNulls<String>(0) as Array<String>, तो संकलक मुझे सचेत करेगा कि यह कलाकार कभी सफल नहीं हो सकता। लेकिन यह अंदर डिफ़ॉल्ट कार्यान्वयन है Array(0, {i -> ""})। क्या मुझे कुछ याद है?


stackoverflow.com/questions/33583235/… - टिप्पणियों में से एक का सुझाव है कि चेतावनी एक बग है
डंकन मैकग्रेगर

जवाबों:


128

देर से (जून 2015) तक कोटलिन मानक पुस्तकालय समारोह है

public fun <T> arrayOf(vararg t: T): Array<T>

इसलिए स्ट्रिंग्स की एक खाली सरणी बनाने के लिए आप लिख सकते हैं

val emptyStringArray = arrayOf<String>()

2
टाइप किए गए सरणियों के बारे में क्या पसंद है IntArray? अभी मैं उपयोग कर रहा हूं arrayOf<Int>().toIntArray(), क्या कोई बेहतर तरीका है?
csharpfolk

5
इन विधियों का उद्देश्य क्या है? क्योंकि हम आकार असाइन नहीं कर सकते हैं, इसलिए हम मूल्य या असाइन नहीं कर सकते। सरणी [0] java.lang.ArrayIndexOutOfBoundsException:अपवाद फेंकें ।
आसिफ मुश्ताक

यदि Tइसके बजाय प्रकार क्या है String?
अरी

1
@csharpfolk, आप एक खाली IntArray को शुरू करने के लिए intArrayOf () का उपयोग कर सकते हैं
Cremons

कोटलिन में स्ट्रिंग सरणी में आइटम कैसे जोड़ें?
सैयद हमजा हसन

42

सिर्फ संदर्भ के लिए, वहाँ भी है emptyArray। उदाहरण के लिए,

var arr = emptyArray<String>()

देख


1
गिरफ्तार [0] फेंक java.lang.ArrayIndexOutOfBoundsException:हम इसे कैसे उपयोग कर सकते हैं?
आसिफ मुश्ताक

8
यह एक खाली सरणी है, आप इसमें से / से कुछ भी जोड़ / पढ़ नहीं सकते हैं। यह बेकार लग सकता है, लेकिन कभी-कभी आपको कहीं एक सरणी पास करनी होती है और इससे आप आसानी से एक खाली सरणी का निर्माण कर सकते हैं।
कुबा बेरानेक

1
यह मार्टियन ओडिसी के जवाब से बेहतर है क्योंकि जब किसी सरणी को इनिशियलाइज़ करने के लिए डेटा क्लास में इस्तेमाल किया जाता है, तो arrayOf एक java.util.concurrent.ExecutionException का कारण बनता है जबकि खालीअरे () नहीं करता है।
iSWORD

1
यह एक अपरिवर्तनीय लंबाई है 0! तो यह बहुत ही विशेष प्रयोजनों के लिए उपयोगी है जो आप किसी भी डेटा को संग्रहीत नहीं करना चाहते हैं (बस प्रकार चाहते हैं )। Array(length){""}वांछित शामिल करने के लिए उपयोग करें length। देखें मेरा उत्तर जानकारी के लिए नीचे।
मीर-इस्माइली

14

खाली है या null? यही तो प्रश्न है!

nullएस की एक सरणी बनाने के लिए , बस का उपयोग करें arrayOfNulls<Type>(length)


लेकिन आकार का एक खाली सरणी उत्पन्न करने के लिए length, उपयोग करें:

val arr = Array(length) { emptyObject }

नोट यह है कि आपकोemptyObject प्रत्येक डेटा-प्रकार (बीकॉज जिसे आप नहीं चाहते हैं null) के अनुसार ठीक से परिभाषित किया जाना चाहिए । ई। जी। के लिए Stringहै, emptyObjectहो सकता है ""। इसलिए:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")

यहाँ एक जीवंत उदाहरण है । ध्यान दें कि प्रोग्राम डिफ़ॉल्ट रूप से, दो नमूना तर्क से चलता है।



2

उपयोग:

@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)

यह अशक्त मानों के साथ आरंभ किए गए स्ट्रिंग्स के 0 आकार के सरणी देता है।

1. गलत:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

यह लौट आता है arrayOfNulls<String>(0)

2. गलत:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

यह स्ट्रिंग्स युक्त एक सरणी देता है।


2

जैसा कि ऊपर उल्लेख किया गया है, आप उपयोग कर सकते हैं IntArray(size)या FloatArray(size)


1

मुझे खाली सरणी बनाने के दो तरीके मिले, दूसरा तरीका बिना लंबोदर:

var arr = Array (0, { i -> "" })
var arr2 = array<String>()

कोटलिन के अशक्त तारों के बारे में, यह अनुमति नहीं है। आपको स्ट्रिंग का उपयोग करना है ? तार को शून्य होने की अनुमति देने के लिए टाइप करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.