Я ищу метод, сопоставимый с методом javascript Array.prototype.every
, но в рубине. В javascript он выполняет итерацию по массиву и возвращает значение true, если каждый элемент вызывает обратный вызов для возврата true. Одна из приятных вещей об этом заключается в том, что она не беспокоит повторение всего массива, если один из элементов не прошел тест. Вместо этого он замыкает и возвращает false.Есть ли рубиновый эквивалент метода Array.prototype.every javascript?
function isBigEnough(element) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); //=> false
[12, 54, 18, 130, 44].every(isBigEnough); //=> true
Я знаю, что я мог бы получить подобный эффект с более низкими итераторами уровня, как петли while
.
def isBigEnough(arr)
i = 0
result = true
while i < arr.length
if arr[i] >= 10
i++
else
i = arr.length
result = false
end
end
return result
end
is_big_enough([12, 5, 8, 130, 44]) #=> false
is_big_enough([12, 54, 18, 130, 44]) #=> true
Но я решил, что у рубина есть что-то для этого. Кто-нибудь знает, как получить такой же эффект?
Попробуйте метод ['all?'] (Http://ruby-doc.org/core-2.2.2/Enumerable.html#method-i-all-3F). – orde
, если вы используете downvote, пожалуйста, оставьте комментарий, объясняющий почему – williamcodes
Я не делал ни слова, но не должно быть так сложно понять, что кто-то может выбрать, чтобы ответить на вопрос, на который можно было ответить, просто просмотрев документацию или сделав быстрый Google поиск. –