参考になるサイト

基本文法

よく使う表現

記号 名前 意味 Javaだと
A <: B 上限境界 AはBという上限境界を持たなければならない A extends B
A >: B 下限境界 AはBという下限境界を持たなければならない B extends A
XXX[+T] 共変 BがAのサブ型 → XXX[B]がXXX[A]のサブ型
XXX[-T] 反変 BがAのサブ型 → XXX[A]がXXX[B]のサブ型
l: _* シーケンスパターンワイルドカード lが集合の場合に展開する

タプル

val tmp = (10, 20)
println(tmp._2) // -> 20

Option型

val opt = Some("a")
opt.fold("error") {_ => "success"} // -> success
val opt = None
opt.fold("error") {_ => "success"} // -> error

テンプレート記法

sを使う。

val name = "Ichiro"
val age = 42
val str = s"$name は $age 才です" // -> Ichiro は 42才 です

変数の前後に空白を設けない場合。

val name = "Ichiro"
val age = 42
val str = s"${name}は${age}才です" // -> Ichiroは42才 です

引数チェック

requireを使えばIllegalArgumentExceptionを投げることができる。

def hoge(i: Int): Int = {
  require(i > 5)
  i*2
}