引数の型に関するクロージャーについて、より明確にしたいと思います。だから私は次のようなものを書くでしょう
List<Y> myCollect(List<X> list, Closure<X,Y> clos) { ... }
Groovy がその型情報を使用しないことはわかっていますが、Groovy++ はコンパイル時にそれを使用する可能性があります。これを達成できますか(コメントに入れる以外に)?
更新: タイトルは誤解を招くように聞こえるかもしれませんが、上記の例でより明確になると思いました。関数の引数であるクロージャの型を指定することに興味があります。組み込みの を再定義したいとしcollect
ます。だから私は書くことmyCollect
ではなく、書くことに興味がありclos
ます。私が達成したいのは、コンパイル時エラーを取得することです
myCollect(['a', 'ab'], { it / 2 }) // compile error
myCollect(['a', 'ab'], { it.size() }) // OK