有没有办法从Java改进Scala中的for循环实现
我已经用Java编写了一个方法,我想将其重写为Scala。(Sales.Metrics是一个有没有办法从Java改进Scala中的for循环实现,java,scala,loops,enums,Java,Scala,Loops,Enums,我已经用Java编写了一个方法,我想将其重写为Scala。(Sales.Metrics是一个枚举) for(int i=0;i 类的实现,您可能需要 Ascala < /Case>转换器(参见导入集合.javaCouvter。< />代码>) 。您已经要求Scala语言特性,可以考虑使用Scala高级特性,例如“理解”。用于根据您的需求对列表进行迭代。通常,我们使用Scala for Comprehension with Yield来生成具有预期结果的新列表。 条件保护的应用也与中的相同 for
枚举
)
for(int i=0;i
因此,我提出了以下实现,但我怀疑它可能不是最优的。也许我错过了一些很酷的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)
}
for(igeneratorigeneratori
我会在这里使用foreach,因为你需要的只是一个副作用
根据Metrics
类的实现情况,您可能需要asScala
-converter(请参见import collection.JavaConverters.\u
)
我会在这里使用foreach,因为你需要的只是一个副作用
根据<代码>度量> <代码>类的实现,您可能需要<代码> Ascala < /Case>转换器(参见<代码>导入集合.javaCouvter。< />代码>)
。您已经要求Scala语言特性,可以考虑使用Scala高级特性,例如“理解”。用于根据您的需求对列表进行迭代。通常,我们使用Scala for Comprehension with Yield来生成具有预期结果的新列表。
条件保护的应用也与中的相同
for {
value <- Sales.Metrics.values()
if !metricValue.isSet(value)
} yield metricValue.setMetric(value, true)
用于{
Value由于您已经要求Scala语言特性,您可以考虑使用Scala高级特性,如“理解”来根据您的需求迭代列表。通常,我们使用Scala来理解收益率,以产生预期结果的新列表。
条件保护的应用也与中的相同
for {
value <- Sales.Metrics.values()
if !metricValue.isSet(value)
} yield metricValue.setMetric(value, true)
用于{
值来自Sales.Metrics.values()[i]
,您可以推断它必须是一个数组-Java中没有其他数据结构接受方括号索引。实际上,Java中没有其他数据结构接受方括号…来自Sales.Metrics.values()[i]
,您可以推断它一定是一个数组-Java中没有其他数据结构接受方括号索引。实际上,Java中没有其他数据结构接受方括号…我认为您可能可以避免使用分号“;”来处理Scala样式,因为它主要用于Java上下文。:)@madhawaOnline无法真正测试代码,因为OP没有给出销售的定义。Metrics
应该是什么,不太确定分号是否可以省略,没有换行符和大括号…但是,是的,你可能是对的,分号在这里是多余的,谢谢。我想你可能可以避免使用Semi结肠“为了处理这里的Scala风格,因为它主要用于Java上下文。:@madhawaOnline无法真正测试代码,因为OP没有给出销售的定义。Metrics
应该是什么,不太确定分号在这里是否可以省略,而不需要换行符和大括号…但是,是的,你可能是对的,分号olon在这里是多余的,谢谢。
for (TypeOfValues v: Sales.Metrics.values()) {
if (!metricValue.isSet(v)) {
metricValue.setMetric(v, true);
}
}
Sales.Metrics.values() foreach { value =>
if (!metricValue.isSet(value)) metricValue.setMetric(value, true)
}
for {
value <- Sales.Metrics.values()
if !metricValue.isSet(value)
} yield metricValue.setMetric(value, true)