match
समानता से अधिक विशिष्ट है; आप केवल बराबर नहीं हो सकते हैं, आपके पास एक ही प्रकार का होना चाहिए।
इस मामले में, BigInt
एक केस क्लास नहीं है और उसके साथी ऑब्जेक्ट में unapply
विधि नहीं है, इसलिए आप सीधे उस पर मेल नहीं खा सकते हैं। सबसे अच्छा तुम कर सकते हो
BigInt(12) /% 7 match {
case (a: BigInt,b: BigInt) if (a==1 && b==5) => true
case _ => false
}
या किसी भिन्न रूप क्या है (उदाहरण के लिए case ab if (ab == (1,5)) =>
) है।
वैकल्पिक रूप से, आप उचित प्रकार का एक unapply विधि के साथ एक वस्तु बना सकते हैं:
object IntBig { def unapply(b: BigInt) = Option(b.toInt) }
scala> BigInt(12) /% 7 match { case (IntBig(1), IntBig(5)) => true; case _ => false }
res1: Boolean = true
स्रोत
2012-11-11 18:55:44
चर और बाध्य करने के लिए बाध्यकारी मैंने किया है। मैं बस इतना थका हुआ यह शायद थोड़ा बेहतर किया जा सकता है। धन्यवाद। – marcus