私はSome String
というオプションの文字列を返すライブラリを持っています。ocamlのオプション文字列
これはどういう意味ですか - 私は空でない文字列を受け取りましたか?または空でもよい文字列を受け取りましたか?一般的に、タイプのためにSome
のセマンティクスを決定するのは誰ですか?言語は基本型に対してそれを指定していますか?
ありがとうございます!
私はSome String
というオプションの文字列を返すライブラリを持っています。ocamlのオプション文字列
これはどういう意味ですか - 私は空でない文字列を受け取りましたか?または空でもよい文字列を受け取りましたか?一般的に、タイプのためにSome
のセマンティクスを決定するのは誰ですか?言語は基本型に対してそれを指定していますか?
ありがとうございます!
Some x
は値であり、タイプではありません。ライブラリによって返される型はstring option
です。値が常にSome x
のように見える場合、それは別の質問です。しかし、図書館の作者がそれにはタイプstring
を使うことができるので、それはかなりありそうもありません。オプションタイプを使用すると、None
を使用して値の不在を表すことができます。
タイプ'a option
は、すべてのタイプについて同じセマンティクスを持っています('a
)。タイプ'a option
は、存在していてもいなくてもよいタイプの値を表します。値が存在する場合、形式はSome x
です。ここで、x
は型の値です。値が存在しない場合、形式はNone
です。
タイプstring option
の値は、None
することができ、またはそれはSome ""
することができ、またはそれは任意の文字列"xxx"
ためSome "xxx"
ことができます。特別な文字列固有の意味はありません。
例としては、除算を行い結果を文字列で返す '' div_string:int - > int - > string option''などがあります。 2番目の引数が '' 0''の場合、関数は '' None''を返すことができます。これは '' string option''型です。この結果は、無効な操作が実行されたことを示します。 – objmagic
そのタイプの定義: 'type 'a option = None |いくつかの 'a'。 –