Я работаю над тем, что, как я думал, является простой проблемой Code Wars, но у меня возникли проблемы с использованием перечислимых средств для решения этой проблемы.Ruby - Как фильтровать массив хэшей на одно значение, а затем возвращать значение true, если другое значение соответствует вводу?
Это мой массив данных
data = [
{age: 40, sex: :m},
{age: 24, sex: :f},
{age: 56, sex: :m},
{age: 45, sex: :m},
{age: 23, sex: :f}
]
И проблема
Напишите метод, так что он возвращает истину, если все элементы, соответствующие значения секса имеют возраст больше, чем значение, указанное.
метод должен быть чем-то вроде
def check_ages?(data, sex, older_than)
#Select all hashes matching param(sex) and then check if remaining age values are greater than param(older_than) returning true if so
end
check_ages (данные,: F, 22)? # Должен быть истинным
check_ages (данные,: м, 50)? # Должно быть ложным
Я схожу с ума, пытаясь использовать вложенные выбрать для фильтрации хэши, а если еще соответствовать значение возраста ... Вся помощь была бы оценена
PS Im относительной newbi е с рубином, уверен, что это довольно глупый вопрос ... просто не могу понять синтаксис
Вот подсказка: используйте [Enumerable # все] (http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i -all-3F): 'data.all? {???} '. –
данные.все? {| d | d [: sex]! = sex || d [: age]> age_is_older_than} Ваше право, отлично работает :) Спасибо Cary – Conor
Хорошо для вас Conner. Всегда лучше всего заниматься этим, даже если вам нужно указывать в правильном направлении. –