scala - 基于scala中变量类型的条件

标签 scala variables conditional

我想根据预定义为 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 会来

最佳答案

我们称之为模式匹配,它是最棒的 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")
}

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

关于scala - 基于scala中变量类型的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243882/

相关文章:

xml - 条件依赖注入(inject)

java - 具有继承和混合的 Scala 可测试代码

scala - 当案例类构造函数参数在类外部使用时,它被称为什么?

c++ - 有关变量等函数的更多信息?

jquery - 为什么变量不会传递到 jQuery.each 中?

c - 没有变量的 C 函数调用是否在运行时预编译或评估?

scala - 构建一个 ZIO 和 http4s 应用程序,与 sbt 一起工作,失败,Bazel : missing an implicit

scala - 控制结构化 Spark Streaming 的微批处理

javascript - 在 JSON 树中有一个变量

c# - 为什么 PHP 会给出意想不到的输出?