gpt4 book ai didi

java - 有没有办法从 Java 改进 Scala 中的 for 循环实现

转载 作者:行者123 更新时间:2023-11-29 07:25:57 25 4
gpt4 key购买 nike

我用 Java 写了一个方法,我想用 Scala 重写。 (Sales.Metrics 是一个 Enum)

for (int i = 0; i < Sales.Metrics.values().length; i++) {
Sales.Metrics value = Sales.Metrics.values()[i];
if (!metricValue.isSet(value)) {
metricValue.setMetric(value, true);
}
}

所以我提出了以下实现方案,但我怀疑它可能不是最佳方案。也许我缺少一些很酷的 Scala 功能。在 Scala 中使用 for 循环是否正确?

for (i <- Sales.Metrics.values().length) {
val value: Sales.Metrics = Sales.Metrics.values()(i)
if (!metricValue.isSet(value)) metricValue.setMetric(value, true)
}

最佳答案

发电机i <- arr.length在你的代码中似乎没有任何意义。看起来应该是这样的

for (value <- Sales.Metrics.values() if !metricValue.isSet(value)) {
metricValue.setMetric(value, true)
}

备注:

  1. 在 foreach 循环的主体中,您从不使用任何值的 index,您只使用 value .因此,您不必遍历索引,可以直接遍历值。
  2. Scala 允许 guardsfor里面-表达式/for -loops,所以你可以结合Java的forif合并到一个控制结构中。

另请注意,您的原始 Java 代码也可以在没有显式索引的情况下重写:

for (TypeOfValues v: Sales.Metrics.values()) {
if (!metricValue.isSet(v)) {
metricValue.setMetric(v, true);
}
}

关于java - 有没有办法从 Java 改进 Scala 中的 for 循环实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52781068/

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