基于scala中变量类型的条件

基于scala中变量类型的条件,scala,variables,conditional,Scala,Variables,Conditional,我想根据预定义为任意类型的变量的类型来处理if条件,之后它被更新为String、Int、double、List或Map类型 if (type(x)==int){.....} else if (type(x)==Map){....} 等等 是否有函数获取变量类型,或者如何获取变量类型 在if条件下使用。我知道其中一种方法是使用 x.getClass.getSimpleName 但是当x的类型是一个映射时 它为不同的地图打印Map1或Map2,我不确定1和2在这里表示什么 所以我不能在if条件下

我想根据预定义为任意类型的变量的类型来处理if条件,之后它被更新为String、Int、double、List或Map类型

if (type(x)==int){.....}
else if (type(x)==Map){....}
等等

是否有函数获取变量类型,或者如何获取变量类型 在if条件下使用。我知道其中一种方法是使用

x.getClass.getSimpleName
但是当x的类型是一个映射时 它为不同的地图打印Map1或Map2,我不确定1和2在这里表示什么 所以我不能在if条件下使用它,因为

if (x.getClass.getSimpleName==Map){....}
将是错误的,因为我不知道Map1或Map2将出现

我们称之为模式匹配,这是scala最棒的部分之一:

def foo(x: Any) = x match {
  case m: Map[_,_] => println("I'm a map!")
  case d: Double   => println("I'm a double")
  case i: Int      => println("I'm an int")
  case xs: List[_] => println("I'm a list")
}

下划线表示任何类型,我不在乎哪一种

看看
match
关键字-有点像一个超级充电开关语句。Scala新手指南是一系列介绍Scala的精彩博文,从精彩匹配语句开始: