代码之家  ›  专栏  ›  技术社区  ›  yiksanchan

大小写匹配a`reflect.runtime.universe.Type`[重复]

  •  0
  • yiksanchan  · 技术社区  · 6 年前

    在Java中我们可以 switch(value) {case(x): // do something;}

    在Scala中,我们可以对大小写匹配表达式执行类似的操作:

    val a = 1
    a match {
      case 1 => 1
      case 2 => 2
    } // 1
    

    但是,它不适用于类型为的值 reflect.runtime.universe.Type .

    val tpe = typeOf[Int]
    tpe match {
      case typeOf[Int] => 1
      case typeOf[Option[Any]] => 2
    }
    error: not found: type typeOf
    case typeOf[Int] => 1
                ^
    

    相反,我必须这样做:

    if (tpe =:= typeOf[Int]) {...}
    else if (tpe =:= Option[Any]) {...}
    

    这里有机会使用大小写匹配表达式吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Lasf    6 年前

    val tpe = typeOf[Int]
    
    val intType = typeOf[Int]
    val optionAnyType = typeOf[Option[Any]]
    
    tpe match {
        case `intType` => 1
        case `optionAnyType` => 2
    } //1