OCaml 4.01.0 中缺少 Option.default
Missing Option.default in OCaml 4.01.0
我会使用 String.Set.choose some_set
从一组中挑选一个字符串。
此方法 returns StringOption,但我想使用另一个方法和第二个 return 值,因此我想将 StringOption 转换为字符串。
根据 OCaml 文档 (link here),我知道 Option.default
应该这样做,但由于某些原因它丢失了(尽管 Option
与所有其他方法存在)。
有没有办法解决这个问题或让我的下一个方法接受 StringOption?
谢谢,
首先,这些不是 OCaml 文档 :-) 它是一个附加库。该特定存储库已过时(就像 Sourceforge 上的几乎所有其他内容一样),并且其选项模块已合并到 OCaml Batteries Included as the BatOption 模块中。 Batteries 也是一个附加库,但它是使用最广泛的库之一。
您可以编写自己的函数来从字符串选项中提取字符串,只要您在值实际为 None
时决定要执行的操作即可。在那种情况下,当然没有字符串。
一种可能性是在这种情况下引发异常。如果您确定总是有一个字符串,则永远不会发生异常。如果它确实发生了,你就知道你有问题了。因此,您可以编写如下函数:
let string_of_string_option so =
match so with
| None -> failwith "string_of_string_option, no string"
| Some str -> str
(此函数的工作方式类似于 List.hd
;即,它是一个部分函数,当输入无效时会引发异常。)
你也可以编写自己的版本default
;这是一个极其简单的函数:
let my_default dflt vo =
match vo with
| None -> dflt
| Some v -> v
获取当前 OCaml 文档的一个好方法是浏览 ocaml.org.
另一个非常流行的附加库是 Jane Street Core,如 here 所述。它有一个名为 Option.value
的函数,它类似于您要查找的 default
函数。 (其实我觉得这个名字好一点。)
我会使用 String.Set.choose some_set
从一组中挑选一个字符串。
此方法 returns StringOption,但我想使用另一个方法和第二个 return 值,因此我想将 StringOption 转换为字符串。
根据 OCaml 文档 (link here),我知道 Option.default
应该这样做,但由于某些原因它丢失了(尽管 Option
与所有其他方法存在)。
有没有办法解决这个问题或让我的下一个方法接受 StringOption?
谢谢,
首先,这些不是 OCaml 文档 :-) 它是一个附加库。该特定存储库已过时(就像 Sourceforge 上的几乎所有其他内容一样),并且其选项模块已合并到 OCaml Batteries Included as the BatOption 模块中。 Batteries 也是一个附加库,但它是使用最广泛的库之一。
您可以编写自己的函数来从字符串选项中提取字符串,只要您在值实际为 None
时决定要执行的操作即可。在那种情况下,当然没有字符串。
一种可能性是在这种情况下引发异常。如果您确定总是有一个字符串,则永远不会发生异常。如果它确实发生了,你就知道你有问题了。因此,您可以编写如下函数:
let string_of_string_option so =
match so with
| None -> failwith "string_of_string_option, no string"
| Some str -> str
(此函数的工作方式类似于 List.hd
;即,它是一个部分函数,当输入无效时会引发异常。)
你也可以编写自己的版本default
;这是一个极其简单的函数:
let my_default dflt vo =
match vo with
| None -> dflt
| Some v -> v
获取当前 OCaml 文档的一个好方法是浏览 ocaml.org.
另一个非常流行的附加库是 Jane Street Core,如 here 所述。它有一个名为 Option.value
的函数,它类似于您要查找的 default
函数。 (其实我觉得这个名字好一点。)