豆無日記スマートフォン用の表示で見る豆無日記この広告は、90日以上更新していないブログに表示しています。Lambdaのセッションです。実際のところ、クロージャと言うより、匿名内部クラスよりは見やすい新たなラムダ式の記法ってだけなんですけども。メンドイし、厳密な定義とかあまりよく知らないので、新しいラムダの記法を「クロージャ」って書いときます。Javaにクロージャを導入するのか?ムーアの法則における成長限界もあるし、将来的にマルチコアによる並列処理が主流になってくるので、マルチコアをもっと引き出すような言語サポートが必要だよね、というのが主な動機だそうです。確かに現状でも優秀なjava.util.concurrentパッケージがありますが、万人向けとは言い難い。手軽に利用できて、かつ、コードが読みやすくなるようにしていかないと。パラレル処理がかんたんに書けないなら、シーケンシャルに書いちゃうよね。Lambdaというのは、実はクロージャ記法導入だけを目的としてちっちゃなプロジェクトでは全然なくて、言語としての並行処理サポート向上を目的とした、割と壮大なプロジェクトだったのでした。手始めに:内部イテレーション記法のサポートfor文とかIterator#next()とかでぐるぐるまわしつつ処理をするのを外部イテレーションとかいいます。配列とかコレクションを、それ自体ではない外側のプログラムコードでぐるぐる回すから「外部」。それに対して、配列やコレクション自体に「おまえらの構成要素に○○という処理をやってくれよ」と処理をお願いして、自分自身でぐるぐる回してもらうのが「内部イテレーション」。いうわけで、コレクションにメソッドが追加されて↓という記法ができるようになります。}).max();GroovyとかRubyとか知ってる人にとっては、構造は見慣れたものですけど、まだまだゴテゴテした感じに映りますね。匿名内部クラスの冗長な記法といったら・・・。クロージャの導入ということで、単純にそういう冗長な記法はやめたいね、という動機で、クロージャ記法の導入となります。.max();頭に#が付く以外は、ほとんどGroovyと同じ記法ですね。