看起來作者是想要 for ... else { if no iteration }
不過看到這語法可能有人會認為是 for ... else { if any break }
而這在 python 是 for ... else { if none break }
Effective Python1 Item 12: Avoid else Blocks After for and while Loops
也許 refactor 比較增加這種語法好
不喜歡RxJava就算了 幹嘛黑Scala嘛 哭哭
我覺得Scala複雜與否是個相對的觀念, 跟個人經驗, 解決問題種類, 甚至於市場都有關.
Scala本身複不複雜? 在 community 裡面討論的複雜, 應該是設計者們討論一些更進階的語言features. 我相信跟一般developers所說的複雜不太一樣. 舉兩個跟 Java 開發者的個人經驗比較有關係的例子:
functional programming w/ type system: Scala 使 FP 更複雜了嗎? 跟 Haskell 同樣東西作比較, immutable data, algebraic data type, map/filter/fold/monoid/functor/monad, etc. 這些 FP 的 patterns 型別的宣告以及內部實作大同小異. 所以 developers 不習慣的我覺得是 FP & static type system. 就算改用其他 FP languages 障礙還是存在, 小弟認為真正的問題點是如何/為何 Think in FP.
generics w/ type variance: Java 的 List<E> 不是很好嗎 Scala List[+A] 搞這麼複雜幹嘛? 但話說 Java 也有 variance 啊~ 就 wildcard super/extends 用在 collecions 上. 但是我估計一半以上的 Java developers 不寫 bounded wildcard generics. 大部分人覺得 collections 可以用就好了, invariant 也沒差, type erasure/reification/unchecked warning 管他的. Angelika 的 Java Generics FAQs 可能九成的人沒聽過. 而且我們寫了一堆 code, 是芥末日也(還)沒到. Java 有這樣的好工具而把他藏著. 好處是 developers 不需要會用它也可以寫 code. 壞處是也只有少數人用這個feature, 而一個developer 想用也不太敢, 因為做出的東西難保其他人懂. 這樣真的是好現象嗎? Scala 則說有 variance 就要用啊 讓 type system 輔助 api 的設計以及使用. 是的, 很多人不習慣. 但是好東西不學嗎