Scala match case

巢星纬
2023-12-01

1、按值匹配

说明:match检查参数colType,如果是"ipv4"、“string"等,转化为"String”,如果为 “a” 转为" bigint" 以此类推,其他未匹配到的,则复制为"unknown"。

  def mapTypeToType(colType: String) = {
    val stardardTypeName = colType.trim.toLowerCase match {
      case "ipv4" | "string" | "varchar" | "text" | "blob" | "clob" | "nullable(string)" => "String"
      case "a" => "bigint"
      case "bool" | "boolean" | "nullable(uint8)" | "uint8" | "uint16" => "int"
   		// 不匹配的其他 值转换为 null
      case others => "unknown"
    }
    stardardTypeName
  }

2、按对象类型匹配

说明:按类型匹配时,case语法为:case 自定义变量名: 要匹配的类类型 => 执行语句。如果不需要在执行语句中使用这个变量,可以把自定义变量名使用下划线(_)代替。需要注意的时当期望匹配目标类型时List, Tuple等含有泛型参数的高阶类型时,由于泛型擦除机制的缘故,无法正确识别参数类型T:

  def typeMatch(obj: Any) ={
    obj match {
      case obj : Int => println("类型为Int")
      case obj : String => println("类型为String")
      case obj : List[Int] => println("类型为List")
    }
  }
 类似资料:

相关阅读

相关文章

相关问答