2015-05-20 4 views
-3

У меня проблема с пониманием метода detect в Enumerable. Я попытался с примером кода:Понимание метода `detect`

(1..6).detect { |i| i % 2 == 0 and i % 3 == 0 } 
#=> 6 

Но я все еще озадачен. Любая помощь приветствуется.

+0

Привет и добро пожаловать в переполнение стека. Итак, у вас есть ответ, но чтобы помочь вам лучше писать вопрос о будущем, я должен сказать, что неясно, о чем вы озадачены. Вероятно, это поможет нам, если вы объясните, что вы знаете, и что вы не знаете, - просто сбросив строку кода и сказав «я озадачен», заставляет меня думать «я тоже»;) Мои вопросы будут «Что вы озадачены, зачем вам это знать? Что вы пробовали, когда вы играли с ним в« irb »? –

+0

Вы понимаете похожие методы (например, find/select/reject) тоже, или есть что-то конкретное о обнаружении, которое является проблемой? Это просто * это конкретное использование * обнаружения, которое вы не понимаете, или вы видели более простые версии, которые имеют смысл? и т. д. и т. д. любым способом, который вы можете сузить от «я», m mystified "на реальный вопрос поможет нам помочь вам в будущем :) –

+1

Привет, Taryn, спасибо, что нашли время, чтобы помочь с моим вопросом, а также за советом о том, как задавать вопросы о SO в будущем. Я должен был подробно остановиться на моем первоначальном вопросе - я не был уверен, как «6» было возвращено из код, который я поставил. Теперь я понимаю это отлично благодаря ответу от @squiguy. Большое вам спасибо. Очень признателен. –

ответ

2

В соответствии с documentation этот метод возвращает первый элемент в перечислимом объекте, который возвращает блок.

Следовательно, первое число в этом диапазоне, которое делится на 2 и 3, равно 6 и, следовательно, оно возвращается. Если бы это было не так, и ни одно число не делилось на 2 и 3, тогда метод вернет nil.

Это способ «обнаружить» первый объект, который делает блок истинным.

+0

Большое спасибо за ответ на мой запрос. Вы объяснили это отлично для меня :) –

+0

@sulufiti Отлично, я рад :). – squiguy

Смежные вопросы