社内システムフレームワーク

Scala入門
(Javaとの基本的な構文比較)
2012/08/03
Scalaとは?
• Javaプラットフォーム上で動作できるプログラ
ミング言語
• オブジェクト指向+関数型言語の組み合わせ
• 静的型付け言語
• ソースを簡素に記述することができる
言語仕様から説明すると嫌になる人がいそうな
のでまずはJavaとの比較から始めます!
変数定義
• Javaの場合、「データ型 変数名 = 初期値」
String tmp = “Scala楽しい!”;
• Scalaの場合、「var 変数:データ型 = 初期値」
var tmp:String = “Scala楽しい”;
• Scalaは型を省略できる(型推論)
var tmp = “Scala楽しい”;
↑次に数値を代入するとコンパイルエラー!
定数
• Javaの場合、finalで定義
String final TEST_KEY = “定数です”;
• Scalaの場合、valで定義
val TEST_KEY = “定数です”;
文末
• Javaの場合はセミコロン
String tmp = “Scala楽しい!”;
• Scalaの場合はセミコロンがなくてもOK
var tmp = “Scala楽しい”
もちろん、「;」をつけてもOK
var tmp = “Scala楽しい”;
import文
• 基本的には同じ
• ワールドカード指定が異なる
• Javaの場合は「*」
import java.io.*;
• Scalaの場合は「_」
import java.io._;
関数(メソッド)定義
• Javaでのメソッド
public void test(int x) {
} // 戻り値なし
public int test(int x) {
} // 戻り値あり
• Scalaでの関数
def test(x:Int) : Unit = {
} // 戻り値なし
def test(x:Int): Int = {
} // 戻り値あり
アクセス修飾子
• JavaのpublicはScalaでは存在しない
【Java】
public void test(int x)
【Scala】
def test(x:Int) : Unit
上記は同じ意味である。つまり、Scalaでは何も
指定しないことがJavaのpublicとなる
関数の戻り値
• Javaの場合はreturnで返却
public int test() {
retrun x;
}
• Scalaの場合はreturn & 最後の値
def test(): Int = {
if (x == 2) {
return -1
}
x // 最後の行も戻り値となる
}
引数のデフォルト値
• Javaには無い機能で関数のデフォルト値を指
定できる(PHP等にある機能と同様)
def test(name, email) :Unit = {
}
• Emailに初期値を設定したい場合
def test(name, email=“[email protected]”) :Unit = {
}
多重ループ
• Javaの場合
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
}
}
• Scalaの場合
for (i <- 0 until 10; j <- 0 until 5) {
}
forフィルター
• Javaの場合
for (int i = 0; i < 10; i++) {
if (i == 2) {
}
}
• Scalaの場合
for (i <- 0 to 10 if i == 2) {
}
今回はここまで
• まずは簡単な文法について説明
• あまり、長くやると何も覚えてくれなそうなの
で・・・。
• 次回はクラス定義など少し実践的な内容
• Scalaの独自機能についても説明予定