LoginSignup
2
2

More than 5 years have passed since last update.

Scalaを使っていてふ~んと思ったこと。

Posted at

記事の内容

最近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)が入っている。

まだまだこれから増えていきそうな予感。

2
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2