太一の最新作は
Lambdaの力でコンパクトなRESTサーバ
import ninja.siden.App;
public class Main {
public static void main(String[] args) {
App app = new App();
app.get("/hello",
(req, res) -> "Hello world");
app.listen();
}
}
import ninja.siden.App;
public class UseWebsocket {
public static void main(String[] args) {
App app = new App();
app.get("/", (q, s) ->
new java.io.File("assets/chat.html"));
app.websocket("/ws")
.onText((con, txt) ->
con.peers()
.forEach(c -> c.send(txt)));
app.listen(8181);
}
}
感想やツッコミを
SNSにポストして貰えると
嬉しいです
import rx.functions.Action1;
import rx.functions.Func1;
public class NoLambda {
public static void main(String[] args) {
rx.Observable
.range(1, 20)
.filter(new Func1() {
@Override
public Boolean call(Integer n) {
return n % 3 == 0;
}})
.map(new Func1() {
@Override
public String call(Integer n) {
return String.format("[%02d] ", n);
}})
.toBlocking()
.forEach(new Action1() {
@Override
public void call(String s) {
System.out.println(s);
}});
}
}
public class UseLambda {
public static void main(String[] args) {
rx.Observable
.range(1, 20)
.filter(n -> n % 3 == 0)
.map(n -> String.format("[%02d] ", n))
.toBlocking()
.forEach(System.out::print);
}
}
public class UseClosure {
public static void main(String[] args) {
rx.Observable
.range(1, 20)
.filter { it % 3 == 0 }
.map { String.format("[%02d] ", it) }
.toBlocking()
.forEach { println it }
}
}
もっと複雑なものは
WEB+DB PRESS vol81
で紹介しています
まとめ
RxJavaをJava8で使うと最高
GroovyならJava8と変わらない