お手軽さに欠ける
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
$ javac Main.java
$ java Main
Hello, World!
型推論
Java
// Java 6 以前
List<String> list = new ArrayList<String>();
// Java 7 以降
List<String> list = new ArrayList<>();
Scala
val list = new ArrayList[String]
強力なパターンマッチ
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)
}
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