title: F#の判別共用体は、ある種のクラス階層を表すために使える
url: http://www.atmarkit.co.jp/fdotnet/special/introfs_02/introfs_02_01.html
snippet:
-----引用-----
F#の判別共用体は、ある種のクラス階層を表すために使える。
例えば、ファイルとディレクトリを判別共用体で表してみよう。次のコードがその例だ。
// 簡単のため、ファイルはファイル名とサイズのみを持っているとする
type FileSystemEntry =
| File of string * int
| Dir of string * FileSystemEntry list
↑ファイルとディレクトリを判別共用体で表した例
※定義した「FileSystemEntry」型を、Dirケースの値の型としても定義しているところがポイント。
このコードでは、「File」と「Dir」という2つのケースを持つ判別共用体としてFileSystemEntry型が定義されている。File/Dirケースの値の型は、「of」以下に記載されている。このコード例では、Fileケースが保持する型はstring型とint型であり、Dirが保持する型はstring型とFileSystemEntry型リストである(タプルの型のように見えるが、実はタプルそのものではない。単に、複数の型を持つことを意味する)。値の型の中で「FileSystemEntry型リスト」が使われることで、再帰的に判別共用体を格納できるので、ファイル・システムのツリー構造を表現できるというわけだ。
-----引用-----
0 件のコメント:
コメントを投稿