समस्या
Kotlin प्रकार प्रणाली में अशक्त-सुरक्षा की इस सीमा के आसपास काम करने का मुहावरेदार तरीका क्या है से nulls को खत्म?Kotlin: एक सूची (या अन्य कार्यात्मक परिवर्तन)
val strs1:List<String?> = listOf("hello", null, "world")
// ERROR: Type Inference Failed: Expected Type Mismatch:
// required: List<String>
// round: List<String?>
val strs2:List<String> = strs1.filter { it != null }
यह सवाल नहीं है सिर्फ nulls को नष्ट करने, लेकिन यह भी प्रकार प्रणाली स्वीकार करते हैं कि nulls परिवर्तन द्वारा संग्रह से निकाल दिए जाते हैं बनाने के बारे में।
मैं लूप नहीं करना चाहूंगा, लेकिन अगर ऐसा करने का यह सबसे अच्छा तरीका है तो मैं करूँगा।
काम के आसपास
निम्नलिखित compiles, लेकिन मुझे यकीन है कि यह यह करने के लिए सबसे अच्छा तरीका है नहीं कर रहा हूँ:
fun <T> notNullList(list: List<T?>):List<T> {
val accumulator:MutableList<T> = mutableListOf()
for (element in list) {
if (element != null) {
accumulator.add(element)
}
}
return accumulator
}
val strs2:List<String> = notNullList(strs1)
मीठे! रवींद्र! मैंने उसे क्यों नहीं देखा? :-) – GlenPeterson
यदि आप सूची बना रहे हैं तो आप 'listOfNotNull' का भी उपयोग कर सकते हैं – Mijail