Замена if методом более высокого порядка - PullRequest
0 голосов
/ 14 июня 2019

использование блока if в scala для распределенных вычислений наименее рекомендуется. У меня есть код, и я хочу заменить, если с Scala метод более высокого порядка. Как я могу это сделать. Код детали указан Здесь

Некоторая часть кода, которая содержит if block.

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 ]

3 голосов
/ 14 июня 2019

Попробуйте

bat.filter(_.BestFitness < GlobalBest_Fitness).foreach { x =>
  GlobalBest_Fitness = x.BestFitness
  GlobalBest_Position = x.BestPosition
}
1 голос
/ 14 июня 2019

Выполните фильтр перед foreach с условием if в качестве условия фильтра.Затем выполняйте foreach без каких-либо условий.

...