私は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")
}
}
}
コードをコンパイルできないので、これを行うことはできませんか?クラスのタイプをチェックするスカラーウェイとは何ですか?それは...ですか:
if(cls.isInstanceOf[String]) { ... }
else if(cls.isInstanceOf[Date]) { ... }
else { ... }
右?
ただし、これはwillコンパイル:
def checkType(cls: AnyRef) {
cls match {
case s: String => println("is a String")
case d: Date => println("is a Date")
case _ => println("others")
}
}
...またはその簡略版:
def checkType(cls: AnyRef) =
cls match {
case _: String => println("is a String")
case _: Date => println("is a Date")
case _ => println("others")
}
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")
}
}
}