■ はじめに
開発中だが、バグったので整理。
目次
【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