【Scala】Scala ~ 基本編 / Option型 ~

■ はじめに

開発中だが、バグったので整理。

目次

【1】Option型
 1)Some
 2)None
【2】NULLおよび混同しそうなキーワード
 1)null
 2)None
 3)Nothing
 4)Nil

【1】Option型

* 値があるかないかを表す型
* 2種類のサブクラスを持っている

1)Some

* 値があることを表す型

2)None

* 値がないことを表す型

サンプル

def getHello(isNone: Boolean = false): Option[String] = {
  // Option[String]で指定した場合、Some()で返さないとコンパイルエラー
  // つまり、「if isNone None else "Hello"」はできない
  if isNone None else Some("Hello")
}

【2】NULLおよび混同しそうなキーワード

1)null

* Java の nullと同じ

2)None

* 上述の通り「値がないことを表す型」
* null とは、別物

例:開発中にバグを出したコード

val value: Option[String] = None
val result = if (value != null) value.get else "NG" // ここで「java.util.NoSuchElementException: None.get」
println(result)

3)Nothing

* クラス階層における、「一番下」に位置するクラスで全ての型のサブタイプ

4)Nil

* 「空のリスト」を表すオブジェクト
 => 名前が悪くない、、、empty でよかったのでは??

参考文献

https://qiita.com/f81@github/items/7bca48469d9aea65780d

関連記事

Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
Scala ~ 基本編 / ジェネリック
https://dk521123.hatenablog.com/entry/2023/03/21/003817
Scala ~ 基本編 / Either型 ~
https://dk521123.hatenablog.com/entry/2023/08/02/132315
Scala ~ 基本編 / 例外処理 ~
https://dk521123.hatenablog.com/entry/2023/10/05/000135