提问人:matj1 提问时间:6/26/2023 更新时间:6/26/2023 访问量:70
Scala 等同于 Haskell 的模式匹配?
Scala's equivalent to Haskell's as-patterns in pattern matching?
问:
我在 Scala 中有一个长大小写,我使用了很大一部分。我可以命名大小写的部分,这样我就不必重写整个表达式了吗?
例:
x match {
case (("def", symPos) :: defRest, defPos) :: rest =>
val (defs, others) = split(rest)
((("def", symPos) :: defRest, defPos) :: defs, others)
// …
}
该模式只是为了检测数据中的某种结构;我不需要操纵它的内部结构。如果我能参考整个事情,代码会更短、更清晰。(("def", symPos) :: defRest, defPos)
在 Haskell 中,我可以这样写:
case x of
def@(("def", _) : _, _) : rest ->
let (defs, others) = split rest
in (def : defs, others)
-- …
在这里,我命名了更大的模式,它允许我省略其内部的名称,仅使用名称将其放入列表中。我可以在 Scala 中做这样的事情吗?我什么也没找到。def
答: 暂无答案
评论