मेरा वर्तमान उपयोग मामला बहुत छोटा है, या तो परिवर्तनीय या अपरिवर्तनीय मानचित्र चाल करेगा।स्कैला अपरिवर्तनीय मानचित्र, कब परिवर्तनीय जाना है?
एक विधि है कि एक अपरिवर्तनीय मानचित्र है, जो तब एक 3 पार्टी एपीआई विधि है कि अपरिवर्तनीय मानचित्र रूप में अच्छी तरह से लेता है कॉल लेता
def doFoo(foo: String = "default", params: Map[String, Any] = Map()) {
val newMap =
if(someCondition) params + ("foo" -> foo) else params
api.doSomething(newMap)
}
प्रश्न में मानचित्र आम तौर पर काफी छोटा हो जाएगा, अधिक से अधिक हो सकता है है केस क्लास उदाहरणों की एक एम्बेडेड सूची, कुछ हज़ार प्रविष्टियां अधिकतम। तो, फिर, इस मामले में अपरिवर्तनीय होने में थोड़ा प्रभाव डालें (यानी नए मैप वैल प्रति के माध्यम से मानचित्र के अनिवार्य रूप से 2 उदाहरण हैं)।
फिर भी, यह मुझे थोड़ी बातें सुनाती है, नक्शे को कॉपी बस कुछ ही k- के साथ एक नया नक्शा प्राप्त करने के लिए> v प्रविष्टियों यह पर हमला बोला।
मैं उन प्रविष्टियों के लिए उत्परिवर्तनीय और params.put("bar", bar)
इत्यादि जा सकता हूं, और फिर params.toMap
एपीआई कॉल के लिए अपरिवर्तनीय रूपांतरित करने के लिए, यह एक विकल्प है। लेकिन फिर मुझे म्यूटेबल मैप्स के आसपास आयात करना और पास करना है, जो स्कैला के डिफ़ॉल्ट अपरिवर्तनीय मानचित्र के साथ जाने की तुलना में परेशानी का थोड़ा सा है।
तो, जब यह अपरिवर्तनीय नक्शे से अधिक परिवर्तनशील मानचित्र का उपयोग करने के उचित/अच्छा अभ्यास है के लिए सामान्य दिशानिर्देश क्या हैं?
धन्यवाद
संपादित हां, तो ऐसा लगता है कि अपरिवर्तनीय नक्शे पर एक ऐड आपरेशन की पुष्टि, लगातार समय के पास ले जाता है @ DHG की और @ निकोलस के दावे कि एक पूरी कॉपी नहीं किया जाता है, जिसके लिए समस्या का हल ठोस मामला प्रस्तुत किया।
देखें [चरम चतुरता: स्कैला में कार्यात्मक डेटा संरचनाएं] (http://www.infoq.com/presentations/ कार्यात्मक- डेटा- संरचना-in-Scala)। –
धन्यवाद, अब इसे देख रहा है – virtualeyes