【发布时间】:2012-07-04 23:23:01
【问题描述】:
在我尝试创建一个动态函数来匹配“实例”之前,我在 Scala 的模式匹配方面取得了不错的进展(顺便说一句),并且将来作为对象的一部分可能会保存该 [type] 以供以后使用。现在我明白了如何使用模式类匹配
案例 X:Int => ....
但是为什么这(下)似乎对传递给它的任何东西都有效?此外,我似乎真的无法使用 [TYPE] ,它是一个对象吗?我无法打印它或 val = 等。我想过尝试使用相关的 java.Class ,但这似乎不正确。感谢您的任何建议,谢谢!
class Parent
class Child extends Parent
object TestTypes {
def testRelate[TYPE](o:Any) = {
o match {
case o:TYPE => println(" o is a matching type")
case _ => println(" o fails")
}
// val save = [TYPE] .. why can't I do this?
}
def main(args: Array[String]): Unit = {
val p = new Parent
val c = new Child
testRelate[Int](c) // why does this Match???
testRelate[Parent](c) //
}
}
--- 更新 所以只是为了澄清(并感谢您的回答)但是有人如何在运行时动态地完成类类型的模式匹配呢?似乎 scala 有一个静态类型匹配(在上面的例子中是要分解的),但是 instanceOf( ) 是我选择的动态检查吗?
【问题讨论】:
-
提示:当编译器告诉你有问题时,请注意它。
-
查看this post的编辑部分。 (这是我这周第三次发这个帖子了。)
标签: scala