Je suis nouveau sur scala et j'apprends le mot clé match
maintenant.
Je veux savoir si nous pouvons utiliser le mot clé match
pour vérifier le type d'une classe. Mon code est:
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")
}
}
}
Le code ne peut pas être compilé, donc, c'est impossible de faire ça? Quel est le scala-way pour vérifier le type d'une classe? Est-ce:
if(cls.isInstanceOf[String]) { ... }
else if(cls.isInstanceOf[Date]) { ... }
else { ... }
Droite?
Ceci cependant sera compiler:
def checkType(cls: AnyRef) {
cls match {
case s: String => println("is a String")
case d: Date => println("is a Date")
case _ => println("others")
}
}
... ou la version simplifiée de cela:
def checkType(cls: AnyRef) =
cls match {
case _: String => println("is a String")
case _: Date => println("is a Date")
case _ => println("others")
}
Vous avez besoin d'un identifiant avant l'annotation de type dans l'instruction case
.
Essayez ceci et cela devrait fonctionner:
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")
}
}
}