を見て学習したことのメモ
{}
式
{}式の一般形は
{ (<式>(;|<改行>))* }
例
{ println("A"); println("B"); 1 + 2 }
改行を入れればセミコロンを省略することができます。
{
println("A")
println(("B")
1 + 2
}
返り値は最後に評価された式になる。(この場合3)
if式
if (条件式) {
式
} else if (条件式) {
式
} else {
式
}
elseの部分は省略可能で、その場合に条件が一致しなかった時はUnit型の値が帰ってくる
Unit型はJavaではvoidに相当するもので、返すべき値がないときに使われ、唯一の値()を持ちます。
https://dwango.github.io/scala_text/control-syntax.html
while式
while (条件式) {
式
}
または
do {
式
} while(条件式)
条件式のところはBoolean
型である必要がある。
for式
for (ジェネレータ) {
式
}
ジェネレータとは変数名 <- exp
で書くことができる。
具体的には
for (x<- 1 to 5) {
println(x)
}
=>
1
2
3
4
5
toとuntilがあり
1 to 5 (1,2,3,4,5)
1 until 5 (1,2,3,4)
for ()
のなかでifを使うこともできて条件に合致するものだけを取り出すことができる。
Listを使った処理
for(e <- List("A", "B", "C", "D", "E")) println(e)
のように書くとListの中身一つ一つに対して処理することができる。
さらにyield
を付け加えることで配列に変更を加えたものを得ることもできる。
for(e <- List(("A", "B", "C", "D", "E")) yield {
"This is" + e
}
match式
複数の分岐を表現できる制御構造
val taro = "Taro"
taro match {
case "Taro" => "Male"
case "Kenshi" | "Takeshi" => "Male" #処理をまとめる
case "Nanami" => "Female"
case "Haruki" if 条件式 => "Female"
case _ => "Other" #何にもマッチしなかった時
}
のように書くことができる。
パターンマッチによる値の取り出し
val list = List("A", "B", "C")
list match {
case List("A", b, c) =>
#listの最初が"A"の時の処理、b,cにはlistの同じ位置にある値が格納されている。
case _ =>
println("nothing")
}