アカウント名:
パスワード:
といった問題点があります。
確かに今までもクロージャー的なことはできたのですが、今回の提案はクロージャーという仕組みそのものよりも、関数型や構文が大きいと思います。
言語設計としては、従来の名前ベースの型付け(同じ内容でも名前が違えば違う型)に、内容ベースの型(内容が同じならば同じ型)を入れるというのは結構大きな変更だと思います(技術的な話ではなく、設計思想として)。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
Callbackインタフェース用意するだけじゃダメ? (スコア:3, 参考になる)
Object execute(Object[] data);
}
みたいなjava.lang.Callbackインタフェース用意してくれるだけで、クロージャの代わりになると思うんだけど。
final Target target = ...
obj.doSomething(new Callback() {
Object execute(Object[] data) { return target.doThis(); }
});
みたいな感じでクロージャ。
Re:Callbackインタフェース用意するだけじゃダメ? (スコア:5, 参考になる)
・書き方がClosureに比べて明らかに冗長
・そもそも引数が増えたら新しいインターフェースが必要
・レキシカル・スコープを備えていない。finalでないといけないとか。
といった理由でみんな挫折していった結果今に至るんだと思います。
匿名クラス自体は、Swingでプログラムしている人はみんな今でも使ってますけどね。
スコープ問題は手段を選ばなければ回避可能なのでともかくとしても、記述の冗長さが一番の問題でしょうね。そこまでするなら他の方法使ったほうが早いよ、となってしまうから。
Re:Callbackインタフェース用意するだけじゃダメ? (スコア:3, すばらしい洞察)
といった問題点があります。
確かに今までもクロージャー的なことはできたのですが、今回の提案はクロージャーという仕組みそのものよりも、関数型や構文が大きいと思います。
言語設計としては、従来の名前ベースの型付け(同じ内容でも名前が違えば違う型)に、内容ベースの型(内容が同じならば同じ型)を入れるというのは結構大きな変更だと思います(技術的な話ではなく、設計思想として)。
Re:Callbackインタフェース用意するだけじゃダメ? (スコア:0)
interface Closure<R, A>{
R execute(A arg);
}
みたいな感じである程度マシになりますが、やはり記述がどうにも面倒でやめました。
Apache Commonsに近い事をしてくれるのがあるのに気がついてAC。
Re:Callbackインタフェース用意するだけじゃダメ? (スコア:1, すばらしい洞察)
戻り値や引数も自分で決めたいとか。