Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OCaml 4.01.0中缺少Option.default_Ocaml_Ml - Fatal编程技术网

OCaml 4.01.0中缺少Option.default

OCaml 4.01.0中缺少Option.default,ocaml,ml,Ocaml,Ml,我想使用String.Set。选择某个集合从集合中选择一个字符串 这个方法返回StringOption,但我想使用另一个返回值为第二个的方法,因此我想将StringOption转换为string 根据OCaml docs(),我知道选项.default应该这样做,但是由于某种原因它丢失了(尽管选项和所有其他方法都存在) 有没有办法解决这个问题,或者让我的下一个方法接受StringOption 谢谢,首先,这些不是OCaml文档:-)它是一个附加库。该特定存储库已经过时(与Sourceforge上

我想使用
String.Set。选择某个集合
从集合中选择一个字符串

这个方法返回StringOption,但我想使用另一个返回值为第二个的方法,因此我想将StringOption转换为string

根据OCaml docs(),我知道
选项.default应该这样做,但是由于某种原因它丢失了(尽管
选项和所有其他方法都存在)

有没有办法解决这个问题,或者让我的下一个方法接受StringOption


谢谢,

首先,这些不是OCaml文档:-)它是一个附加库。该特定存储库已经过时(与Sourceforge上的几乎所有其他存储库一样),其选项模块已作为模块合并到中。电池也是一个附加库,但也是使用最广泛的一种

您可以编写自己的函数从字符串选项中提取字符串,只要您决定在值实际为
None
时要执行的操作。在这种情况下,当然没有字符串

一种可能是在这种情况下提出一个例外。如果你肯定总是有一个字符串,那么异常永远不会发生。如果真的发生了,你知道你有问题。因此,您可以编写如下函数:

let string_of_string_option so =
    match so with
    | None -> failwith "string_of_string_option, no string"
    | Some str -> str
(此函数的工作原理类似于
List.hd
;即,它是一个局部函数,在输入无效时引发异常。)

您还可以编写自己的
默认版本
;这是一个非常简单的函数:

let my_default dflt vo =
    match vo with
    | None -> dflt
    | Some v -> v
获取当前OCaml文档的一个好方法是浏览


另一个非常流行的附加库是Jane Street Core,如下所述。它有一个名为
Option.value
的函数,它类似于您正在寻找的
default
函数。(事实上,我觉得这个名字好一点。)

嗨,杰弗里!谢谢你的快速回答!我验证了类似的东西,但在编译过程中,我得到了
错误:未绑定的值字符串\u的\u字符串\u选项
。我用string\u of_string\u option string.Set.choose free\u Vars调用它
。我不是说已经有一个名为
string\u of_string\u option的函数了。我是说你可以很容易地写你自己的。您还可以编写自己版本的
default
。或者您可以使用随附的OCaml电池中的
默认值
。您有很多选择:-)