match
eşitlik daha spesifiktir; Sen sadece eşit olamazsın, aynı tipte olmalısın.
Bu durumda, BigInt
, örnek bir nesne sınıfı değildir ve eşlik eden nesnesinde unapply
yöntemine sahip değildir, dolayısıyla doğrudan eşleştiremezsiniz. yapabileceği en iyi bunların (örneğin case ab if (ab == (1,5)) =>
)
BigInt(12) /% 7 match {
case (a: BigInt,b: BigInt) if (a==1 && b==5) => true
case _ => false
}
ya da varyantıdır.
Alternatif olarak, uygun tür bir uygulamasını kaldırma yöntemi ile bir nesne oluşturmak olabilir:
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
Değişkenlere ve korumaya bağlanmak benim yaptığım şeydir. Sadece, belki biraz daha iyi yapılabilirdi. Teşekkür ederim. – marcus