Neden aynı ada sahip iki tip parametrenin ("A" olarak adlandırılır) (A) adının aşağıdaki örnekte belirtilmesine izin verildiğini merak ediyorum. Bunun, tip parametrelerinin bir POOR adlandırma olduğunu biliyorum, bunu yapma.aynı ada sahip iki tür parametre
(Benim tahminim örneğin sınıf seviyesi ve işlev düzeyi, farklı bir kapsam düzeyinde bir üzerinde olmasıdır ve derleyici Cendereleme çeşit kullanıyor) 2.8.0 den
class MyTest[A](){
type MyType = A
def checkString[A](value:A, x:MyType):A = {
value match {
case x:String => println("Value is a String")
case _ => println("Value is not a String")
}
x match {
case x:String => println("x is a String")
case _ => println("x is not a String")
}
value
}
}
Örnek çıktı
scala> val test = new MyTest[Int]
test: MyTest[Int] = [email protected]
scala> test.checkString("String",1)
Value is a String
x is not a String
res7: java.lang.String = String
scala> test.checkString(1,1)
Value is not a String
x is not a String
res8: Int = 1
Bu soru, biçimlendirmeniz nedeniyle okunması daha zor hale getirilmiştir; def bloğunun kapanış ayracı ve altındaki kod gerçekten girintili olmalıdır. – Submonoid