我想知道为什么两个类型参数(名为“A”)具有相同的名称(“A”)是允许按照下面的例子。我知道这是一个POOR命名的类型参数,不要这样做。两个同名的类型参数
(我的猜测是,它们是在一个上的不同范围的水平,例如类水平和功能电平,并且编译器使用某种名称重整的)
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
}
}
实施例输出从2.8.0
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
由于你的格式化,这个问题变得更加难以阅读--def块和它下面的代码的右括号应该被缩进。 – Submonoid 2010-09-20 13:59:43