Я пытаюсь найти лучший способ определить, в каком диапазоне задано целое число. Возьмите этот хэш, например:Проверить на целое число в наборе диапазонов
score_levels = {
1 => {'name' => 'Beginner', 'range' => 0..50},
2 => {'name' => 'Intermediate', 'range' => 51..70},
3 => {'name' => 'Pro', 'range' => 71..85},
4 => {'name' => 'Expert', 'range' => 86..96},
5 => {'name' => 'Master', 'range' => 97..100}
}
Я хотел бы запустить другую логику баллами, что-то вроде:
case score
when score_levels[1]['range']
level_counters[1] += 1
when score_levels[2]['range']
level_counters[2] += 1
when score_levels[3]['range']
level_counters[3] += 1
end
есть более общий способ сделать это? Возможно, что-то в этом духе:
score_levels.each |key, val| {if val['range'].member?(score) then level_counters[key] += 1 }
Спасибо!
Домены перекрываются и сколько из них вы ожидаете? – Vasfed
Диапазоны не перекрываются. Я думаю, что-то вроде 5 диапазонов, может быть, немного больше –
Хороший вопрос. Хотя это может показаться незначительным, читатели ценят, что вы назначаете переменную ('score_levels') в хэш вашего примера. Слишком часто это опускается, и даже скобки хэша могут отсутствовать. Как правило, при подаче примера (хорошая вещь) полезно показать ожидаемый или желаемый результат. Здесь, например, у вас может быть небольшой массив баллов и показывать уровни, на которые вы хотите их сопоставить. Да, это очевидно здесь, но это не занимает много места. –