基于scala中变量类型的条件
我想根据预定义为任意类型的变量的类型来处理if条件,之后它被更新为String、Int、double、List或Map类型基于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 (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的精彩博文,从精彩匹配语句开始: