Для меня это классический прецедент для монадического интерфейса.
for {
opt <- iterable
t <- opt
} yield t
Это просто сахар для flatMap
решения, описанного выше, и он производит идентичный байткод. Тем не менее, синтаксис имеет значение, и я думаю, что одним из лучших моментов использования синтаксиса Scala monadic for
является то, что вы работаете с Option
, особенно в сочетании с коллекциями.
Я думаю, что эта формулировка значительно читаема, особенно для тех, кто не очень хорошо разбирается в функциональном программировании. Я часто стараюсь как монадические, так и функциональные выражения цикла и вижу, что кажется более простым. Я думаю, flatMap - это тяжелое имя для большинства людей, чтобы получить (и на самом деле, называя его >>=
, это делает более интуитивный смысл для меня).
Зная, кто вы (из списка рассылки scala-user), вы правы. Я уверен (не имею доступа к моему Scala dev envt на данный момент :-). Можете ли вы немного объяснить, как это работает. Я обещаю, что я не идиот, но я понятия не имею, как я должен был получить это от scaladoc. –
Не будет ли это «it flatMap {_ elements}»? (Я снова прочитал скаладок!) –
Было бы здорово увидеть больше гуру Scala на StackOverflow. Список рассылки scala-user заполняет мой почтовый ящик тайными аргументами из-за break/continue :-) –