कक्षा चर के मान की पहचान करने के लिए मैं "मैच" कथन का उपयोग कैसे कर सकता हूं? निम्नलिखित अमान्य है, और मैं एक स्वीकार्य संस्करण नहीं मिल सकता है - अगर अलावा अन्य ... यदि किसी और ... और ...मैं स्कैला "मैच" कथन में कक्षाओं से कैसे मिलान कर सकता हूं?
val c: Class[_] = classOf[Int]
val what = c match { case classOf[Int] => "int!"; case classOf[Float] => "float!" }
संकलक शिकायत: error: not found: type classOf
और निश्चित रूप से कोई लाभ नहीं हुआ Int.class
तरह
c match { case Class[Int] => "int!"; case Class[Float] => "float!" }
error: type Class of type Class does not take type parameters.
मैं भी कोशिश की है वेरिएंट, सभी:, मैं Class[Int]
उपयोग कर सकते हैं नहीं है, क्योंकि है कि प्रकार की जानकारी मिटा दिया जाता है। (और मैं वास्तव में स्ट्रिंग्स में कनवर्ट नहीं करना चाहता हूं: मुझे लगता है कि कंपाइलर कैच का नाम बदला/स्थानांतरित किया जाना महत्वपूर्ण है।)
क्या मैं घना हो रहा हूं, या क्या मैं स्कैला अंधा स्थान में ठोकर खा रहा हूं?
ठीक है, नीचे दिए गए उत्तर जवाब के लिए सही है (और धन्यवाद कर रहे हैं!) लेकिन यह तेजी से दिखाई देता है * यह * स्कैला में एक प्रकार का बदसूरत छेद है। कक्षाएं सिंगलेट हैं, इसलिए कोई कारण नहीं है कि उन्हें कुशलतापूर्वक मिलान करने के लिए उन्हें चर के लिए असाइन करना होगा - न ही रक्षक या अलग-अलग बयान के रूप में लिखे गए आईएफएस की एक कैस्केडिंग श्रृंखला का उपयोग करना। लेकिन जाहिर है, यह है। – Tim