मैं किसी विधि के पैरामीटर के प्रकार की जांच करना चाहता हूं, लेकिन मुझे ऐसा करने का सबसे अच्छा तरीका नहीं पता है। मेरा कोड देखें:विभिन्न एक्स के लिए पैटर्न-एक्स कक्षा [एक्स] कैसे करें?
class X {
def x(a: Int, b: String) {}
}
val methods = classOf[X].getDeclaredMethods
methods map { m =>
m.getParameterTypes.toList map { t =>
println(t.getName)
// I don't know how to write the following
if (the type of t is Int) { do something}
else if(the type of t is String) { do something}
else { }
}
}
कृपया कोड में टिप्पणी को नोट करें। मुझे नहीं पता कि स्केल तरीके में प्रकारों को कैसे जांचें।
मैं कोशिश की है:
t match {
case _:String => println("### is a string")
case _:Int => println("### is an int")
case _ => println("### ?")
}
लेकिन यह संकलित नहीं किया जा सकता।
if (t.isAssignableFrom(classOf[String])) // do something
else if(t.isAssignableFrom(classOf[Int])) // do something
else {}
ऐसा लगता है हम स्केला में इसका इस्तेमाल करना चाहिए, सही:
मैं जावा तरह से जाँच करने के लिए उपयोग कर सकते हैं?
अद्यतन:
मैं match
उपयोग करना चाहते हैं, मैं इस तरह लिखना चाहिए:
t match {
case i if i.isAssignableFrom(classOf[Int]) => println("### is an Int")
case s if s.isAssignableFrom(classOf[String]) => println("### is a String")
case _ => println("###?")
}
यह सबसे अच्छा जवाब है?
आप अंतिम पंक्ति में '+>' से क्या मतलब है? – Andrey
'+>' शायद एक टाइपो है और इसे पढ़ना चाहिए '=>' – michid
यह एक टाइपो है, मैंने बस इसे ठीक किया है। धन्यवाद। – Freewind