アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
素人的な質問 (スコア: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と旨く馴染みはしますが。