BT

新しい あなたは、アーリーアダプター?それともイノベーター?そんな皆様に、InfoQの新機能をご案内しています。詳細はこちら

C#、ScalaのシンタックスをベースにしたJavaのラムダ式

| 作者: Alex Blewitt , 翻訳者 竹中 翔 - (株)ポータルアイランド 投稿日 2011年9月12日. 推定読書時間: 1分未満 |

原文(投稿日:2011/09/09)へのリンク

Java 8において最も期待されている新機能の一つがラムダ式だ。ラムダ式とは、データのように引数や変数に渡すことのできる匿名関数のことだ。ラムダ式のシンタックスは確定していなかったが、人々が最も精通しているシンタックスは何なのか、調査が行われた

lambda-devメーリングリストに最近投稿されたメールによると、Javaのラムダ式はC#ベースのシンタックスになる予定であるとのことだ。C#ベースのシンタックスは既に広く知られ、利用されている(C#では、バージョン1.0でデリゲートが、バージョン2.0で匿名メソッドが、バージョン3.0でラムダ式がサポートされた)。

BGGAのような他の候補もあったが、調査では他に比べて圧倒的に優れているものはないという結果が得られた。加えて、C#やScalaで使われている既存のシンタックスは、より多くのプログラマに慣れ親しまれている(C#スタイルとScalaスタイルの匿名関数の主な違いは、引数の型の指定方法である。C#では“int foo”と指定するが、Scalaでは“foo: int”のように指定する。つまり両者に大きな差はない。Java 8では、通常のメソッドの引数の型を指定するやり方にあわせて、C#が採用している“int foo”というスタイルを採用する予定だ)。

大規模な調査を行ったにも関わらず、どの候補がよりよいのかは、はっきりとしませんでした(それぞれのシンタックスには、よい部分とよいとは言いきれない部分があり、他に比べてはっきりとよいと言えるものはありませんでした)。それで、我々は最もJavaに似た二つの言語(C#とScala)で既に使われているシンタックスを採用するのが、新しいシンタックスを作り出すよりもベターであると思ったのです。

式とブロックの両方が使えるようになる予定だ。式はブレースなしで表現され、評価されると値を返すというものだ。ブロックはブレースで囲んで表現され、returnキーワードが指定されない限り値を返さない。例えば


x => x + 1

(x) => x + 1

(int x) => x + 1

(int x, int y) => x + y

(x, y) => x + y

(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }

() => { System.out.println("I am a Runnable"); }

ラムダ式の主要な利点の一つは、引数の型の推測である。いくつかのケースでは、コンパイラは正しい型を推測することができない(特にオーバーロードされた演算子のケースである。“(x,y) => x+y”は、xylongなのかdoubleなのか、あるいはObjectなのかということを知らなければ、全くコンパイルすることができない)。ほとんどのケースでは、型推測エンジンは正しいコードを生成するだろう。しかし、もし必要であれば、開発者が型情報を常に明示的に指定することも可能だ。

新しいシンタックスをサポートしたコンパイラは、実験目的のため、近いうちに利用できるようになるだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT