सूचकांक के माध्यम से संग्रह को संभालने के फायदों में से एक है एक-एक-एक त्रुटियों से बचने के लिए। यह निश्चित रूप से एकमात्र लाभ नहीं है, लेकिन यह उनमें से एक है।स्लाइडिंग के साथ एक के द्वारा बंद?
अब, मैं अक्सर स्काला में कुछ एल्गोरिदम में sliding
उपयोग करें, लेकिन मुझे लगता है कि यह आम तौर पर बहुत दूर-एक करके त्रुटियों के लिए कुछ इसी तरह का परिणाम है, क्योंकि आकार n
का एक संग्रह में एक m
की sliding
तत्वों आकार की है n - m + 1
तत्व। या, अधिक मामूली रूप से, list sliding 2
list
से छोटा एक तत्व है।
मुझे लगता है कि इस पैटर्न में एक गायब अमूर्तता है, जो कुछ sliding
भाग होगा, कुछ और हिस्सा - जैसे foldLeft
reduceLeft
है। मैं नहीं सोच सकता कि यह क्या हो सकता है। क्या कोई मुझे यहां ज्ञान प्राप्त करने में मदद कर सकता है?
अद्यतन
के बाद से लोगों को स्पष्ट एक मैं क्या बात कर रहा हूँ नहीं कर रहे हैं, चलो इस मामले पर विचार करें। मैं एक स्ट्रिंग को कैपिटल बनाना चाहता हूं। असल में, प्रत्येक पत्र जो किसी पत्र से पहले नहीं है, ऊपरी मामला होना चाहिए, और अन्य सभी अक्षरों को कम मामला होना चाहिए। sliding
का उपयोग करके, मुझे विशेष मामला या तो पहला या अंतिम अक्षर होना चाहिए। उदाहरण के लिए:
def capitalize(s: String) = s(0).toUpper +: s.toSeq.sliding(2).map {
case Seq(c1, c2) if c2.isLetter => if (c1.isLetter) c2.toLower else c2.toUpper
case Seq(_, x) => x
}.mkString
दिलचस्प ... अपने विशिष्ट उदाहरण एक राज्य मशीन की तरह मेरे लिए लग रहा है उचित होगा (आप में संक्षेप में उन कर सकते हैं स्कैला?), और यदि आप 'स्लाइडिंग' की कुछ कार्यक्षमता चाहते हैं तो आप आगे भी देखना चाहते हैं - यह एक पार्सर की तरह लगना शुरू हो जाता है। इसका मतलब यह भी है कि मुझे आपके प्रश्न का उत्तर देने के लिए पर्याप्त जानकारी नहीं है :) (मैंने जो छोटे से पढ़ा है, उसे लगता है जैसे यह एक इटारेटी-जैसी पैटर्न की मदद कर सकता है, इसलिए आप इसे देख सकते हैं, लेकिन मुझे वास्तव में कोई जानकारी नहीं है)। – Owen
या शायद यह कहने का तरीका यह है कि आपको पहले एक विशेष मामला बनाना होगा क्योंकि यह * एक विशेष मामला है, यानी यह एक टोकन होना अच्छा होगा जो स्ट्रिंग की शुरुआत का प्रतिनिधित्व करता है, जो इस ध्वनि को भी बनाता है एक राज्य मशीन/पार्सर की तरह अधिक। – Owen
मैं ओवेन से सहमत हूं: समस्या विशेष मामलों का पहला चरित्र वर्णन करती है, इसलिए कोड को भी आवश्यकता होती है। यहां बताया गया है कि मैंने समस्या कथन कैसे पढ़ा: "प्रत्येक चरित्र को अपरकेस करें यदि यह (ए) पहला अक्षर है, या (बी) एक अक्षर वर्ण का पालन करता है"। पहले चरित्र के लिए व्यवहार विशेष रूप से परिभाषित किया जाना चाहिए। –