gpt4 book ai didi

scala - scala:将match语句转换为模式匹配匿名函数-具有值

转载 作者:行者123 更新时间:2023-12-03 11:53:43 25 4
gpt4 key购买 nike

像类似的问题:Convert match statement to partial function when foreach is used。现在类似地,IntelliJ要求我改进代码。区别在于,我将值用于匹配:

val matchMe = "Foo"
keys.foreach(key =>
key match {
case `matchMe` => somethingSpecial()
case _ => somethingNormal(key, calcWith(key))
})

将其重构为匿名模式匹配功能将类似于:
keys.foreach {
case `matchMe` => somethingSpecial(_)
case _ => somethingNormal(_, calcWith(_)) //this doesn't work
}

请注意,在第二种情况下,由于需要两次,因此无法使用 _。有什么方法可以在这里使用匿名模式匹配功能吗?

最佳答案

您不能在此处使用通配符_,其目的是表明您不在乎匹配的值。

您可以使用命名参数:

keys.foreach {
case `matchMe` => somethingSpecial(matchMe)
case nonSpecialKey => somethingNormal(nonSpecialKey, calcWith(nonSpecialKey))
}

没有任何限制,它将匹配任何值。请注意, case的顺序很重要,因为 case x => ...匹配任何内容,并且实际上会捷径其他 case语句。

顺便说一句,我认为您的 somethingSpecial(_)不能满足您的期望/期望。它只是 x => somethingSpecial(x)的简短版本,而不是 somethingSpecial(matchMe)

关于scala - scala:将match语句转换为模式匹配匿名函数-具有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332799/

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