Другой ответ хорош, но я считаю, что код может быть намного проще.Код на Ruby довольно плохой (не только это, он даже синтаксически незаконен!), И я бы вообще не пытался его переводить, вероятно, было бы гораздо лучше переписать его, чем переводить.
Две конкретные строки, о которых вы спрашиваете, являются просто очень запутанным способом записи
min, max = pop.minmax_by { |x| x[:objectives][i] }
Однако, поскольку min
и max
являются локальными переменными блока, они сразу выходят из области видимости вконец блока, и поскольку они больше нигде не используются, весь цикл фактически не используется.(Если Enumerable#min
или Enumerable#max
или Hash#[]
/ Array#[]
не будут переопределены, чтобы иметь некоторый побочный эффект, который был бы действительно странным.)
Integer#times
оценивается как self
, так что все это фактически эквивалентно:
pop.first[:objectives].size
Эквивалент Scala, равный
pop.head('objectives).size
Но на самом деле ,Размещенный вами код Ruby синтаксически недопустим, так что на самом деле это не код Ruby вообще , и нет эквивалента Scala.