用高阶方法替换if

时间:2019-06-14 07:41:18

标签: scala functional-programming distributed-computing

最少建议在scala中使用if块进行分布式计算。我有代码,如果要使用Scala高阶方法,我想替换。我怎样才能做到这一点。 给出了详细代码Here

包含if块的代码的某些部分。

var bat = DenseVector.fill(N)(new BAT12(d , MinVal , MaxVal ))
bat.foreach{x => x.BestPosition = x.position;x.fitness =  Sphere(x.position)  ; x.BestFitness = x.fitness}
bat.foreach(x =>
if(x.BestFitness < GlobalBest_Fitness)
{
 GlobalBest_Fitness =x.BestFitness ;GlobalBest_Position = x.BestPosition
})

2 个答案:

答案 0 :(得分:3)

尝试

bat.filter(_.BestFitness < GlobalBest_Fitness).foreach { x =>
  GlobalBest_Fitness = x.BestFitness
  GlobalBest_Position = x.BestPosition
}

答案 1 :(得分:1)

在foreach之前进行过滤,将if条件作为过滤条件。然后毫无条件地进行foreach。