水曜日, 3月 19, 2014

Java 8: ラムダ式

Java 8 が正式にリリースされました。

ラムダ式が導入されるということで、さっそく試してみました。

ラムダ式とは関数を抽象化したもので、コンパクトにコールバック関数の引渡し・定義ができます。

import java.awt.*;
public class LambdaListener extends Frame
{
Button button=new Button("OK");
LambdaListener()
{
add(button);
button.addActionListener(e->System.out.println("OK button pressed."));
setSize(100,100);
setTitle("Lambda");
setVisible(true);
}
public static void main(String args[])
{
LambdaListener test=new LambdaListener();
}
}
ラムダ式のフォーマットですが、

 (引数) -> 定義

となります。Lisp などとは異なる形式ですが、内部クラスなどと比較して簡潔にコールバック関数が定義できます。

public class LambdaMethod
{
public static void main(String args[])
{
Test test=(name)->System.out.println("Hello "+name);
test.say("name");
}
private interface Test
{
public void say(String name);
}
}


Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...