gpt4 book ai didi

scala - 不使用 val 存储值

转载 作者:行者123 更新时间:2023-12-02 05:56:44 25 4
gpt4 key购买 nike

假设有 3 个数字:

val x = 10
val y = 5
val z = 14

我们想做一些逻辑,比如:

if (x + y > z) {
println(x + y)
} else if (x + y < z) {
println(-1)
} else {
println(0)
}

如果我们的“z + y”操作很昂贵,我们必须恰好计算一次:

val sum = x + y

if (sum > z) {
println(sum)
} else if (sum < z) {
println(-1)
} else {
println(0)
}

但我想要更实用的方式,例如:

if (x + y > z) => sum { //This is will not compile :)
println(sum)
} else if (sum < z) {
println(-1)
} else {
println(0)
}

不需要其他语句来存储结果的东西。我可以与其他功能复合的东西,例如:

if(x + y > z) sum {
if(sum + 10 > 100) other_sum {
... etc

附言。匹配没有帮助:

x + y match {
case result if result > z => println(result)
case result if result < z => println(-1)
case _ => println(0)
}

val sum = x + y
sum match {
case _ if sum > z => println(sum)
case _ if sum < z => println(-1)
case _ => println(0)
}

看起来还是很糟糕。

最佳答案

计算临时变量中的 sum 的功能不亚于您的其他解决方案。如果计算比较复杂,可以使用临时变量的名称来描述结果,使代码更具可读性。

如果您想将它与其他代码组合起来,那么您可以轻松地将它包装在一个函数中。

编辑

这是避免临时变量的另一种方法,尽管它不一定比其他方法好。

((sum: Int) =>
if (sum > z) {
println(sum)
} else if (sum < z) {
println(-1)
} else {
println(0)
}) (x + y)

关于scala - 不使用 val 存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52052220/

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