gpt4 book ai didi

scala - 处理未初始化 var 的惯用形式

转载 作者:行者123 更新时间:2023-12-04 05:51:13 26 4
gpt4 key购买 nike

我正在编写我的第一个 Scala 脚本以了解该语言,但我对实现某事的最佳方式有些困惑。

我的情况如下,我有一个方法需要调用 N 次,这个方法在每次运行时返回一个 Int(可能不同,执行有一个随机组件),我想保持最好的运行(这些运行返回的最小值)。

现在,来自 Java/Python 背景,我会简单地用 null/None 初始化变量,并在 if 中进行比较,例如:

best = None
for...
result = executionOfThings()
if(best is None or result < best):
best = result

就是这样(请原谅半python 伪代码)。

现在,在 Scala 上,我有点挣扎。我已经阅读了关于使用 Option 和模式匹配来实现相同效果的信息,我想我可以编写类似的代码(这是我能想到的最好的方法):
best match {
case None => best = Some(res)
case Some(x) if x > res => best = Some(res)
case _ =>
}

我相信这行得通,但我不确定这是否是最惯用的写作方式。这很清楚,但对于这样一个简单的“用例”来说有点冗长。

任何人都可以照亮我的功能之光?

谢谢。

最佳答案

对于这个特殊的问题,一般来说,我建议用 Int.MaxValue 初始化只要你保证N >= 1 .那你只要

if (result < best) best = result

您也可以使用 best作为一种选择,
best = best.filter(_ >= result).orElse( Some(result) )

如果可选性很重要(例如,可能是 N == 0 ,并且在这种情况下您没有通过代码采用不同的路径)。这是处理可能被替换的可选值的更通用的方法:使用 filter保留未更换的 shell ,以及 orElse如果需要,填写替换。

关于scala - 处理未初始化 var 的惯用形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10013870/

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