नमस्ते साथी स्काला प्रोग्रामर्सस्काला java.lang.String और मामला कक्षा
मैं अब कुछ महीने के लिए स्काला के साथ काम कर रहा है, फिर भी मैं कुछ ठीक से बुनियादी सामान के साथ एक समस्या है, मैं तुम्हें आशा करता हूं साथ अभ्यस्त पैटर्न मैच इसके साथ मेरी मदद करेगा।
case class PersonClass(name: String, age: Int)
object CaseTester {
def main(args:Array[String])
{
val string = "hej"
string match {
case e:String => println(string)
case PersonClass => println(string)
}
}
}
जब मैं इस तरह कर रहा हूँ मैं त्रुटि:
pattern type is incompatible with expected type;
found : object PersonClass
required: java.lang.String
case PersonClass => println(string)
और अगर मैं उसके बाद निम्न करने के लिए मिलान पैटर्न में दूसरी पंक्ति बदलने के लिए:
case e:PersonClass => println(string)
मैं तो मिल त्रुटि:
error: scrutinee is incompatible with pattern type;
found : PersonClass
required: java.lang.String
case e:PersonClass => println(string)
हालांकि अगर मैं स्ट्रिंग परिभाषा को निम्नलिखित में बदलता हूं तो यह दोनों मामलों में ठीक से संकलित करता है।
val string:AnyRef = "hej"
मूल रूप से मैं इस समस्या, एक मामले वर्ग जो भी एक निकालने होने के लिए सक्षम होना चाहिए बनाने का प्रयास करते हुए लेकिन जब मुझे लगता है कि नहीं करता है के बारे में यह भावना का एक बहुत :) – Stefan
आप एक वर्ग से मेल नहीं कर सकते हैं मुलाकात उसके जैसा। 'केस PersonClass =>' केवल तभी काम करता है जब 'PersonClass' एक ऑब्जेक्ट है। कक्षाओं से मेल खाने के लिए, आप या तो स्थानीय चर को असाइन करते हैं: 'केस ई: स्ट्रिंग =>' या अनपॅक अगर यह टुपल या केस क्लास है: '(3, 4) मैच {केस (ए, बी) =>' – Ryan