このブログの中を検索する

2012/06/19

F# option型は「値がないかもしれない」ということを型として明示する

title: F# option型は「値がないかもしれない」ということを型として明示する
url: http://www.atmarkit.co.jp/fdotnet/special/introfs_02/introfs_02_01.html

snippet:
-----引用-----

最も厄介なのは、nullというのは(null許容型を除くと)型に現れないことだ。nullは参照型であればどんな型の値にもなり得る。そのため、null参照によるエラーというのは実行してみるまで分からない。これは、nullが来るかどうかの判定をプログラマーが抜け・漏れなく正確に管理する必要があるということを意味する。

それに対してoption型は「値がないかもしれない」ということを型として明示できる。さらに、string option型と、単なるstring型は全く別の型であるため、そのままではstring型として使えない(オプションを要素が1つだけ入るリストと考えれば分かりやすいだろう)。そして、string option型の変数から、中に含まれている値を取り出す場合は、常に値がない可能性を考慮する必要がある。

これらの特徴により、F#ではnullよりも安全に「値がないかもしれない」という事象を扱うことができる。次のコードは、string option型の変数を、string型として扱おうとしているコード例だ。このコードはコンパイル・エラーになる。

let x = Some "hoge" // string option型の変数「x」
// これはコンパイル・エラー
//let ans = x.IndexOf("o")
↑string option型の変数を、string型として扱おうとしてエラーになるコード例

-----引用-----

0 件のコメント:

コメントを投稿