संपादित करें: इस तथ्य को जोड़ा गया है कि सूची क्रमबद्ध है, और 'डुप्लिकेट' को समझना भ्रामक है, इसे शीर्षक में 'अनावश्यक' के साथ बदल दिया गया है।अनावश्यक प्रविष्टियों को हटाएं, स्कैला रास्ता
मेरे पास किसी दिए गए अंतराल में उत्पादन मूल्य बताते हुए प्रविष्टियों की एक क्रमबद्ध सूची है। बाद में सटीक समान मूल्य बताते हुए प्रविष्टियां कोई जानकारी नहीं जोड़ती हैं और सुरक्षित रूप से छोड़ी जा सकती हैं।
case class Entry(minute:Int, production:Double)
val entries = List(Entry(0, 100.0), Entry(5, 100.0), Entry(10, 100.0), Entry(20, 120.0), Entry(30, 100.0), Entry(180, 0.0))
, साथ स्केला 2.8 संग्रह कार्यों प्रयोग अब तक मैं इस काम कर कार्यान्वयन है:
entries.foldRight(List[Entry]()) {
(entry, list) => list match {
case head :: tail if (entry.production == head.production) => entry :: tail
case head :: tail => entry :: list
case List() => entry :: List()
}
}
res0: List[Entry] = List(Entry(0,100.0), Entry(20,120.0), Entry(30,100.0), Entry(180,0.0))
कोई टिप्पणी? क्या मैं कुछ स्कैला जादू पर लापता हूं?
आपको याद है, 'फ़ोल्ड राइट' 'सूची' के साथ उप-शीर्ष है। इसके साथ 'foldLeft' पसंद करें।यह 'हास्केल' के विपरीत है, जहां गैर-कठोरता के कारण 'बाएं' पर 'राइट' को प्राथमिकता दी जाती है। –
ठीक है, लेकिन फिर मुझे परिणाम को उलट करने की आवश्यकता है। एक त्वरित परीक्षण चलाना foldRight + reverse से थोड़ी आगे आगे बढ़ता है, तो मैं कहूंगा कि foldRight स्पष्ट है। – andersbohn