アカウント名:
パスワード:
そのページに書いてある説明だと、どうもラムダ式との違いがわかりにくいように感じました。別のコメントにもありますがはてなの記事 [hatena.ne.jp]の方が解りやすかったですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
素人的な質問 (スコア:1)
--- (´-`)。oO(平和な日常は私を鈍くする) ---
素人的な回答 (スコア:5, 参考になる)
単一のメソッドと、複数あるいは単数のパラメータを
持つオブジェクトを*簡潔に*定義、作成できる機能
といえます。
クロージャは継続等の概念とは違って、クロージャで
しか実現できない機能ではありません。
なので上で述べた以上でもそれ以下でもないのです
が、簡潔に定義できるという点がポイントになります。
プログラマは泥臭いコードを好みませんから。(…よね?)
たとえばコールバック関数を登録する場面で、クロー
ジャを用いて簡潔に書くこともできますし、簡潔である
という点を利用して、共通部分を括り出してクロージャ
でまとめることもできます。
同等のことをオブジェクトで実装しようと思えば、結構
グダグダ書く必要があります。少なくてもクロージャの
ように簡潔には記述できません。
#間違ってたらエロい人指摘お願いします。
Re:素人的な回答 (スコア:0)
>単一のメソッドと、複数あるいは単数のパラメータを
>持つオブジェクトを*簡潔に*定義、作成できる機能
>といえます。
どう見ても「オブジェクトを定義」してるようには思えないが。
プリミティブ変数同様、「オブジェクト指向に変なのが混ざった」というのが率直な印象。
Re:素人的な回答 (スコア:3, 興味深い)
クロージャはオブジェクトに書き下せます。簡単にできるので
やってみてください。そうすれば書いてあることがわかると思います。
>プリミティブ変数同様、「オブジェクト指向に変なのが混ざった」というのが率直な印象。
もともと関数型言語からの概念なので、その印象は正解かもしれません。
しかし、使いこなせば有用な概念ではあります。その有用性をJavaは選択した、ということでしょう。
Re:素人的な回答 (スコア:0)
Smalltalkにもクロージャはあったわけだし
Re:素人的な回答 (スコア:1, 興味深い)
OOPとClosureの相乗効果が挙がって嬉しいのは確かなのですが、
もともとOOPとClosureは無関係ですよね。
Closureは関数(C言語じゃなくLispなどの意味での)系言語の得意技。
hoge.map{xxx}.map{yyy}.select{zzz}
みたいな書き方(これはRubyね)をすることでOOPと旨く馴染みはしますが。
Re:素人的な質問 (スコア:2, 参考になる)
繰り返しを抽象化したり、ファイルの閉じ忘れを防止したり、配列のソートの仕方を変更したり、等。
Re:素人的な質問 (スコア:0)
#外部派との派閥争いに勝てればですが。
Re:素人的な質問 (スコア:1, すばらしい洞察)
向いてる用途が違うんだから、使い分けるのが吉であって、つぶしあいをするのは馬鹿。
内部イテレータでリソースのCloseを自動化するってのは美味しいですね。
たとえばDatabaseへのCommit/Rollbackを(ほとんど)意識せずに済むようになるので、すごく美味しい。
逆にDBのFetchは外部イテレータでないと「巻き戻し」が出来なくなる。
要するに、ループ(?)が最後まで進むことを強制したいときは内部イテレータ、進むか戻るかをこっちが自由に制御したければ外部イテレータ、だろうね。
Re:素人的な質問 (スコア:1, 余計なもの)
妖精哲学の三信
「だらしねぇ」という戒めの心、「歪みねぇ」という賛美の心、「仕方ない」という許容の心
Re:素人的な質問 (スコア:2, 参考になる)
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closure [capsctrl.que.jp]
この辺りを読んでみるとどう?
Re:素人的な質問 (スコア:2, 参考になる)
そのページに書いてある説明だと、どうもラムダ式との違いがわかりにくいように感じました。別のコメントにもありますがはてなの記事 [hatena.ne.jp]の方が解りやすかったですね。
That is not dead which can eternal lie,
And with strange æons, even death may die.
Re:素人的な質問 (スコア:1)
クロージャを実装することで正しい動きになったと言うことだと思う。
クロージャを使った設計、実装上の利点については他の方、お願いします。すんません。