Fre*_*ind 50 scala pattern-matching match
我是scala的新手,match
现在我正在学习这个关键字.
我想知道我们是否可以使用关键字match
来检查类的类型.我的代码是:
object Main {
def main(args: Array[String]) {
val x = "AA"
checkType(x)
}
def checkType(cls: AnyRef) {
cls match {
case String => println("is a String")
case Date => println("is a Date")
case _ => println("others")
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码无法编译,因此,这是不可能的?什么是scala-way来检查类的类型?是吗:
if(cls.isInstanceOf[String]) { ... }
else if(cls.isInstanceOf[Date]) { ... }
else { ... }
Run Code Online (Sandbox Code Playgroud)
对?
Wil*_*ger 85
然而,这将编译:
def checkType(cls: AnyRef) {
cls match {
case s: String => println("is a String")
case d: Date => println("is a Date")
case _ => println("others")
}
}
Run Code Online (Sandbox Code Playgroud)
...或简化版本:
def checkType(cls: AnyRef) =
cls match {
case _: String => println("is a String")
case _: Date => println("is a Date")
case _ => println("others")
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*Hsu 13
在case
语句中的类型注释之前需要一个标识符.
试试这个它应该工作:
object Main {
def main(args: Array[String]) {
val x = "AA"
checkType(x)
}
def checkType(cls: AnyRef) {
cls match {
case x: String => println("is a String:"+ x)
case x: Date => println("is a Date:" + x)
case _ => println("others")
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52459 次 |
最近记录: |