11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ScalaのOption型について

Last updated at Posted at 2023-11-30

この記事は ウェブクルー Advent Calendar 2023 1日目の記事です。

はじめに

この記事は、Scalaの学んだことのアウトプットとして書かれた記事です。
細かい仕様については、公式サイトをご参照ください。
https://www.scala-lang.org/api/2.13.3/scala/Option.html

Option型とは?

ScalaにはOption型という型があります。
Option型は値が入っている場合はSome, 入っていない場合はNoneを返します。

val num1 = Option(1)
//num1: Option[Int] = Some(1)
val num2 = Option(null)
//num2: Option[Null] = None

なぜOptionを使うの?

nullを参照しようとすると、NullPointerExceptionになってしまいます、、そのため、nullチェックをする必要がありますが、その記述を漏れなく行うことは難しい場面もあるでしょう。

そこで、nullが入るかもしれない値は、Optionで包むことで、コンパイル時にエラーを発見することができます!
実行時ではなくコンパイル時にエラーを発見できるので、手軽にエラーを発見できます。

Optionで包んだ値にアクセスするにはいくつか方法があり、getOrElseメソッドでは、値が存在する場合は値を返し、存在しない場合はメソッドの引数に渡した値を返します。

ここではパターンマッチを使った方法でアクセスしてみます。

//Noneだった場合を記述しない場合
val num3 : Option[Int] = Option(5)
 num3 match {
 case Some(a) => a
 }
//warning: match may not be exhaustive.
//It would fail on the following input: None 
//<日本語訳>
//match式は完全ではない可能性があります。
//次の入力では失敗します:None

このように、warningエラーでNoneの場合が定義されていないと警告がでます。これによってコンパイル時にパターンの抜け漏れがあった場合は警告が出るため、実行時エラーになることがありません!

おわりに

簡単にですが、Option型を使った書き方や使用するメリットについて紹介しました。

ウェブクルーでは一緒に働いてくれる方を絶賛募集中です!
興味のある方はぜひお問い合わせください。
https://www.webcrew.co.jp/recruit/

11
0
0

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
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?