Ruby Hash # select {} с условием If - PullRequest
0 голосов
/ 27 июня 2019

Я хочу выбрать все ключевые слова, пока по совокупному SUM < X.Это не работает, потому что return true останавливает сценарий.

cum_sum = 0
keywords = keywords.select{|k| 

cum_sum += k[:contribution]

if cum_sum < top
   return true
else
   return false
 end 
}

1 Ответ

4 голосов
/ 27 июня 2019

Возвращаемое значение блока - это значение последнего оператора, вы можете просто написать:

cum_sum = 0
keywords = keywords.select{|k|
 cum_sum += k[:contribution]
 cum_sum < top
}

Также есть Enumerable # take_ while , которое больше подходит для вашего варианта использования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...