記事の内容
最近Scalaを触り始めていて、
Javaと微妙に違うな~と思ったことを思いつきベースでメモに残しています。
便利とか便利じゃないとかそういった感想は特になく、
単純にコードを読んでいて「おっと」と一瞬固まった部分です。
Scalaの特徴的な記法
全体的な特徴
- ブロックの最後の値が自動で返る
val infoValue = if (value != null) {
"OK"
} else {
null
}
上記例では、info Value には"OK"
かnull
のどちらかが入る。
map
文法
array.map(c => c + 1))
用途
配列の各要素に定義した関数を適用する。
Rubyとかはありますよね、確か。
上記の場合は以下に射影した配列が返る。
[1,2,3,4] → [2,3,4,5]
4.リストと関数
match
文法
result match {
case "YAMADA" => "YAMADAだよ"
case "SAITOH" => "SAITOHだよ"
}
用途
switch~case文と同等
Either
文法
def throwsExceptionFunction(): Either[Throwable, String] = {
~~~~~
}
用途
例外処理に利用する。
Eitherクラスを利用すると、例外が発生する可能性のあるクラスをラップすることが出来る。
Javaの Class A throws Exception
に近い気がする。
呼び出し側の例外処理で、以下のように利用する。
throwsExceptionFunction match {
case Left(e) => //例外処理
case Right(v) => //正常処理
}
try~catchみたいに長ったらしく書かなくて済むみたい?
for (~) yield 式
文法
val checkResult = for (i <- 1 to 5) yield i
用途
for文は通常値を返さないが、yieldを用いることで繰り返された本体の結果を返すことが出来る。
この場合checkResultにはVector(1, 2, 3, 4, 5)
が入っている。
まだまだこれから増えていきそうな予感。