gpt4 book ai didi

scala - 是否可以使用 @ 语法简化此 Scala 匹配语句?

转载 作者:行者123 更新时间:2023-12-04 17:52:06 24 4
gpt4 key购买 nike

是否可以使用 @ 语法简化以下 match 语句?

foo match {
case f: Foo => y(f)
case f if forceY => y(f)
case _ => x
}

其中 forceY 是一个 boolean

我已经尝试了以下但得到了编译错误,它看起来确实像是编译器解释的可能有问题的语法。也许这是无法表达的?

foo match {
case f @(_: Foo | _ if forceY) => y(f)
case _ => x
}

最佳答案

foo match {
case f if f.isInstanceOf[Foo] || forceY => y(f)
case _ => x
}

不能特别使用@,因为语法f: Foo只能出现在case的匹配部分,不能出现在条件(在 if 之后)。

原始版本也不错。如果您在右侧实际拥有的内容比 y 长,您可以显式定义 y 并将三种情况保持原样,因为它们读起来很好.

关于scala - 是否可以使用 @ 语法简化此 Scala 匹配语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762018/

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