История, которую я услышал, состояла в том, что два выдающихся программиста Scala соединялись, когда один из них начал писать некоторый код, подобный этому:
option match {
case Some ...
В этот момент другой сказал: «Что это? Любительский час? Плоская карта, это дерьмо!»
Что касается того, что так мощно в flatMap
, хорошо ... Во-первых, это фундаментальный монадический оператор. Это означает, что это обычная операция, используемая, например, контейнерами (такими как Option
, коллекции и т. Д.), Продолжениями, состоянием и т. Д. Во-вторых, в то время как вы можете де-конструировать Option
, в отличие от flatMap
, не является монадической операцией, поэтому ее нельзя применять так широко. Кроме того, требуется слишком много знаний о данных, которыми вы манипулируете.
Примечание: ранее я говорил, что сопоставление было медленнее, чем flatMap
- на самом деле все верно, вплоть до самой последней версии Scala на момент написания этой статьи, 2.10.1.)