基于scala中变量类型的条件

vai*_*rmy 2 variables conditional scala

我想根据预定义为Any类型的变量类型处理我的if条件,然后将其更新为String,Int,double,List或Map类型

if (type(x)==int){.....}
else if (type(x)==Map){....}
Run Code Online (Sandbox Code Playgroud)

等等

是否有一个函数来获取变量的类型或如何获取变量的类型以在条件中使用它.我知道其中一种方法是使用

x.getClass.getSimpleName
Run Code Online (Sandbox Code Playgroud)

但是当x的类型是Map时,它会为不同的地图打印Map1或Map2,我不知道这里的1和2是什么,所以我不能在if条件下使用它

if (x.getClass.getSimpleName==Map){....}
Run Code Online (Sandbox Code Playgroud)

将是假的,因为我不知道Map1或Map2会来

om-*_*nom 9

我们称这种模式匹配,它是最棒的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")
}
Run Code Online (Sandbox Code Playgroud)

下划线表示任何类型,我不关心哪一种