("post", "index") case List("search") => ("search", "index-6ren">
gpt4 book ai didi

Scala连续匹配

转载 作者:行者123 更新时间:2023-12-04 10:58:38 25 4
gpt4 key购买 nike

pathTokens match {
case List("post") => ("post", "index")
case List("search") => ("search", "index")
case List() => ("home", "index")
} match {
case (controller, action) => loadController(http, controller, action)
case _ => null
}

我想要连续匹配。但得到编译错误。 :(
(pathTokens match {
case List("post") => ("post", "index")
case List("search") => ("search", "index")
case List() => ("home", "index")
}) match {
case (controller, action) => loadController(http, controller, action)
case _ => null
}

当我用括号包裹第一场比赛时,它工作正常。
为什么我在这里需要括号?

最佳答案

不幸的是,这就是 Scala 语法的定义方式。请看一下规范:
http://www.scala-lang.org/docu/files/ScalaReference.pdf

您会在那里找到以下定义(第 153 页,为清楚起见缩短):

Expr1::= PostfixExpr '匹配' '{' CaseClauses '}'

如果您深入了解 PostfixExpr你最终会找到SimpleExpr1其中包含以下定义:

SimpleExpr1::= '(' [Exprs [',']] ')'
Exprs::= Expr {',' Expr}

这意味着 SimpleExpr1 (因此 PostfixExpr )只能包含用括号括起来的其他表达式(如“x 匹配 y”)。

关于Scala连续匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com