12. お手軽さに欠ける
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
$ javac Main.java
$ java Main
Hello, World!
16. 型推論
Java
// Java 6 以前
List<String> list = new ArrayList<String>();
// Java 7 以降
List<String> list = new ArrayList<>();
Scala
val list = new ArrayList[String]
20. 強力なパターンマッチ
Java だと数値と Enum, String などのみ
int monthNumber = 0;
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
...
21. 強力なパターンマッチ
val monthNumber = month.toLowerCase match {
case "january" => 1
case "february" => 2
... snip ...
コンストラクタパターン
case class Person(name: String, age: Int)
val p = Person("duke", 17)
val name = p match {
case Person(name, age) => name
case _ => ""
}
22. 型付きパターン
Java
if (x instanceof String) {
return ((String)x).length();
} else if (x instanceof Integer) {
return ((Integer)x).intValue();
...
Scala
x match {
case s: String => s.length
case i: Int => i
...
23. パターンガード
p match {
case Person(name, age) if age >= 20 => "adult"
case _ => ""
}
24. 正規表現パターン
val numeral = "([0-9]+)".r
val alpha = "([a-zA-Z]+)".r
args match {
case numeral(n) => println("numeral: " + n)
case alpha(s) => println("alphabet: " + s)
case s => println("other: " + s)
}
30. 学習リソース
チュートリアル
A Tour of Scala
オフィシャルのチュートリアル
http://docs.scala-lang.org/tutorials/tour/tour-of-scala.html
Scala School!
Twitter 社が公開してくれているチュートリアル
http://twitter.github.com/scala_school/
32. IDE
IntelliJ IDEA + Scala plugin
http://www.jetbrains.com/idea/
Scala IDE
ecipse のプラグイン
http://scala-ide.org/
Typesafe Scala IDE
Typesafe 社が eclipse と Scala IDE をパッケージング
http://typesafe.com/stack/scala_ide_download