Javaのクロージャをいじってみた(6)
(※updated 2008-08-11のBGGAクロージャライブラリ使用)
1.return の記述
いまさら気づいたんだけど、returnのないクロージャの場合、
最後のステートメントは ; つける必要があるみたいね。
逆にこれがついていない場合はreturnがあるものとみなされるみたい。
2.戻り値無しのクロージャ型記述
あとクロージャの型はvoid型戻り値の場合、明示的にvoidを記述する必要が
あるっぽい。引数は空でいいのに。
...昔のblog記事見直すと{String=>}とか書いているので、
BGGAクロージャライブラリのバージョンによって違うのかも。
戻り値として渡したいステートメントは、最後尾で ; が
ついていないことが目印なのかも。(想像)
{=>} とかいう型の書き方はなくなっちゃうのね。void型ぐらい無記名でも
いいと思うんだけどなあ。 {=>void} ってリフレクションやJNIで利用する
シグネチャの書式 ()V っぽいな。
1.return の記述
いまさら気づいたんだけど、returnのないクロージャの場合、
最後のステートメントは ; つける必要があるみたいね。
逆にこれがついていない場合はreturnがあるものとみなされるみたい。
// ○ 成功する
{String str => System.out.println("Hello " + str); }
// × コンパイルでエラーになる
// [cannot use a void expression as a closure result]というエラー
{String str => System.out.println("Hello " + str) }
2.戻り値無しのクロージャ型記述
あとクロージャの型はvoid型戻り値の場合、明示的にvoidを記述する必要が
あるっぽい。引数は空でいいのに。
...昔のblog記事見直すと{String=>}とか書いているので、
BGGAクロージャライブラリのバージョンによって違うのかも。
// ○ 成功する
{String=>void} print;
// × コンパイルでエラーになる
// [required a type; found a lambda]というエラー
{String=>} print;
// これはOK
{=>String} print;
戻り値として渡したいステートメントは、最後尾で ; が
ついていないことが目印なのかも。(想像)
{=>} とかいう型の書き方はなくなっちゃうのね。void型ぐらい無記名でも
いいと思うんだけどなあ。 {=>void} ってリフレクションやJNIで利用する
シグネチャの書式 ()V っぽいな。
コメント