gpt4 book ai didi

scala - 用函数代码替换 if-else

转载 作者:行者123 更新时间:2023-12-04 13:03:35 24 4
gpt4 key购买 nike

我知道在功能风格中所有 if-else块被模式匹配替换。但是我怎么处理Map s 与 Scala 中的模式匹配?例如,我如何以更具功能性的风格重写此代码?

  val myMap= getMap()
if(myMap.contains(x) && myMap.contains(y)) Some(myMap(x) + myMap(y))
else if(myMap.contains(x + y)){
val z = myMap(x + y)
if (z % 2 == 0) Some(z)
else None
}
else None

最佳答案

使用 if-else对于函数式编程是完全可以接受的,因为 if-else在 Scala 中只是一个表达式。在if-else之间决定的原因模式匹配应该主要集中在提高可读性上。

这是我尝试重写您的代码。我实际上没有在这里使用模式匹配,而是使用 for - 对数值求和的理解。

def sumOfValues = for{
mx <- myMap.get(x)
my <- myMap.get(y)
} yield mx + my

def valueOfSumIfEven = myMap.get(x+y).filter(_ % 2 == 0)

sumOfValues orElse valueOfSumIfEven

关于scala - 用函数代码替换 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311235/

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