यह समस्या है जिसे मैंने हल किया है, हालांकि कुल अनिवार्य स्कैला नोब होने के नाते, मुझे लगता है कि मुझे कुछ पूरी तरह से सुरुचिपूर्ण नहीं मिला। सुधार के किसी भी विचार की सराहना की।स्कैला विशिष्ट स्थानों पर सूची में डालें
val l1 = 4 :: 1 :: 2 :: 3 :: 4 :: Nil // original list
val insert = List(88,99) // list I want to insert on certain places
// method that finds all indexes of a particular element in a particular list
def indexesOf(element:Any, inList:List[Any]) = {
var indexes = List[Int]()
for(i <- 0 until inList.length) {
if(inList(i) == element) indexes = indexes :+ i
}
indexes
}
var indexes = indexesOf(4, l1) // get indexes where 4 appears in the original list
println(indexes)
var result = List[Any]()
// iterate through indexes and insert in front
for(i <- 0 until indexes.length) {
var prev = if(i == 0) 0 else indexes(i-1)
result = result ::: l1.slice(prev, indexes(i)) ::: insert
}
result = result ::: l1.drop(indexes.last) // append the last bit from original list
println(result)
मैं सोच रहा था और अधिक सुरुचिपूर्ण समाधान कुछ इस तरह से प्राप्त हो सकता है, लेकिन यह है कि सिर्फ शुद्ध अटकलें है।
var final:List[Any] = (0 /: indexes) {(final, i) => final ::: ins ::: l1.slice(i, indexes(i))
कला का कार्य;) पहला [ए] मतलब क्या है? क्या मतलब है? – Murgh
पहला '[ए]' का अर्थ है कि यह एक सामान्य विधि है (यह कुछ प्रकार 'ए' पर काम करता है; बाद में' ए 'उसी संदर्भ का जिक्र कर रहा है)। '_' का अर्थ है" जो भी चर है "; यह 'x => x == 4' के लिए शॉर्टकट है। –
'xs.map (..)। Flatten' को' xs.flatMap (..) 'के रूप में लिखा जा सकता है। – Landei