मेरे पास है:
var targets = mutable.HashMap [स्ट्रिंग, वर्डकाउंट] ()
जहां WordCount एक केस वर्ग है:
केस वर्ग वर्डकाउंट (नाम: स्ट्रिंग, id: Int, var गिन: विकल्प [डबल]) {def के साथ गणना (v: डबल): वर्डकाउंट = प्रतिलिपि (गिनती = कुछ (वी))}
और मैं मानों को नक्शे में मौजूद हर बार गिनती के लिए अद्यतन करने का प्रयास कर रहा हूं,
def insert (w1: स्ट्रिंग, w2: स्ट्रिंग, गिन: डबल) = {if (targets.contains (w1)) {var wc = targets.get (w1) .getOrElse () .asInstanceOf [WordCount] wc.withCount (9.0)} अन्य {targets.put (w1, WordCount (w1, idT (), कुछ (0.0))}}
लेकिन यह नहीं है काम करने के लिए उचित तरीका क्या है? कृपया!
कॉलिंग with count
केस क्लास इंस्टेंस को संशोधित नहीं करता है, लेकिन एक नया बना देता है। इसलिए, आप हवलदार होंगे ई में नए बनाए गए उदाहरण को फिर से नक्शे में संग्रहीत करने के लिए:
def insert (w1: स्ट्रिंग, w2: स्ट्रिंग, गिन: डबल) = {val newWC = targets.get (w1) .fold {वर्डकाउंट (w1, idT (), कुछ (0.0)} {oldWC = & gt; OldWC.withCount (9.0)} targets.put (w1, newWC)}
नोट करें targets.get (w1) .fold
: विकल्प [वर्डकाउंट]
, गुना
अपने पहले पैरामीटर को कॉल करता है, अगर इसके रिसीवर एक कोई नहीं
है, अन्यथा (अर्थात इसका कुछ
) यह दूसरे पैरामीटर को कॉल करता है और इसे कुछ
में शामिल मान देता है।
Comments
Post a Comment