【问题标题】:Scala pattern matching variable binding with auto type conversion具有自动类型转换的 Scala 模式匹配变量绑定
【发布时间】:2017-02-10 08:49:20
【问题描述】:

在 Scala 中,我们可以对类型进行模式匹配。那么是否可以将变量绑定到具有类型的匹配模式。现在有界变量的类型为Any

val a: Any = "hello"
a match {
     case v @ String {
          v.length() // not working
     }
}

【问题讨论】:

    标签: scala pattern-matching


    【解决方案1】:

    你的语法不正确!!!,应该是这样的:

    val a: Any = "hello"
    a match {
         case v: String => v.length()
    }
    

    使用: 匹配类型,=> 与下一个block

    【讨论】:

      【解决方案2】:

      要对类型进行模式匹配,请遵循 @chengpohi 中公开的语法。

      绑定运算符@ 用于引用模式匹配中提取的数据的(子)结构。例如在

      ("hello",123) match {
        case t @ (fst: String, snd: Int) => println(s"got tuple $t")
        case _                           =>
      }
      

      标签t 指的是整个元组,不必表示fstsnd

      【讨论】:

        猜你喜欢
        • 2020-08-23
        • 2016-04-02
        • 2020-08-09
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 2013-03-17
        • 2014-03-05
        相关资源
        最近更新 更多