【问题标题】:Scala: how to match/case current value of a val [duplicate]Scala:如何匹配/大小写val的当前值[重复]
【发布时间】:2014-08-05 12:44:26
【问题描述】:

有时您可能需要针对val 的当前值执行match。最明显的尝试是行不通的,因为val 的名称在match 语句中重新绑定,如下所示:

  val s = 5                                       //> s  : Int = 5
  val t = 4                                       //> t  : Int = 4
  t match {
    case s => println(s"matched $s")
    case _ => println("outta here!")
  }                                               //> matched 4

与s 的当前值匹配最直接的方法是什么?

【问题讨论】:

  • @RobbyCornelissen - 当您单击 按钮时,会出现一个用于回答您自己的问题的复选框。 Apparently SO encourages this,虽然我不确定为什么...
  • ... 尤其是当这个问题已经多次出现时。这就是 SO 在您输入时建议现有问题的原因。
  • 感谢您将此问题与我从中推断出答案的较早问题联系起来。我希望其他搜索者能够找到这个问题,如果他们正在搜索我使用的相同短语和术语,例如“当前值”,它们没有在 SO 上出现结果。对于和我有相同编程背景的程序员来说,我这里的问答可能更容易找到,也更直接地回答了问题。这是我发布它们时的希望。当我浏览 SO 提出的现有问题时,没有一个明显与我搜索的术语相关。

标签: scala pattern-matching match case


【解决方案1】:

在case 语句中的val 名称周围使用反引号:

  val s = 5                                       //> s  : Int = 5
  val t = 4                                       //> t  : Int = 4
  t match {
    case `s` => println(s"matched $s")
    case _ => println("outta here!")
  }                                               //> outta here!

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2012-12-03
    • 2015-03-17
    相关资源
    最近更新 更多