【问题标题】:Scala - pattern matching and doing something BEFORE the match.Scala - 模式匹配并在匹配之前做一些事情。
【发布时间】:2011-07-31 10:32:32
【问题描述】:

我想在匹配之前执行一条语句。

def test(x : Int) = x match {
      doSomethingHere always
      case 1 => println("1")
      case 2 => println("2")
    }

它必须在之前,所以我不能只匹配 _ 并在最后执行。它可以在我运行 test() 之前运行,但我宁愿将它保留在函数中。

【问题讨论】:

  • 为什么不让这个函数调用另一个进行匹配的函数呢?
  • 没有理由。但如果可以不这样做,为什么不呢?

标签: scala pattern-matching


【解决方案1】:

然后说

def test(x : Int) = {
    doSomethingHere always
    x match {
      case 1 => println("1")
      case 2 => println("2")
    }
}

它准确且没有样板文件表达了您要完成的工作。除了杂散的 {} 对之外,这里还有什么问题吗?

【讨论】:

  • 谢谢。我没有意识到你可以在任何你想要的地方进行比赛。出于某种原因,我将它完全与函数定义之后的直接联系起来
  • 是的,match 只是另一种语句类型,例如 for、while 和 if。任意数量的 都可以链接到方法体中,只需将它们包装在 {} 中即可。你的问题在 Haskell 中很奇怪,因为模式匹配被集成到函数(方法)声明语法中。
猜你喜欢
  • 2021-08-12
  • 2011-04-30
  • 1970-01-01
  • 2022-01-19
  • 2011-05-24
  • 2016-05-17
  • 2021-12-17
  • 2013-10-27
  • 2014-09-30
相关资源
最近更新 更多