2

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

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

等等

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

x.getClass.getSimpleName

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

if (x.getClass.getSimpleName==Map){....}

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

4

1 回答 1

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")
}

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

于 2013-10-08T09:48:01.117 回答