我知道这可能看起来很基本,但基本上,我想说的是模式匹配
match value with
Null-> failwith "Empty"
|value-> #do something
我已经尝试了 null 或 none 的任何变体,并且还尝试了无法使用的单位,因为值是 float 。
我很困惑,任何帮助将不胜感激
最佳答案
你不能。这是一个设计选择。许多语言允许任何值为空。这种方法的问题在于,当程序员不期望时,值会为空,或者代码必须检查每个输入值是否为空。
OCaml 采用的方法是,如果一个值可能为 null,则必须将其显式标记为 null。这是通过选项类型完成的:
match value with
| None -> failwith "Empty"
| Some value -> (* do something *)
但是,如果您将其直接替换到程序中,则将无法编译,因为 OCaml 会发现该“值”实际上不能为空。无论创建什么,都需要更新以指示它何时返回“空”值(无):
let safe_divide numerator denominator =
if denominator <> 0. then
Some (numerator /. denominator)
else
None (* division by zero *)
关于exception - 如何在 Ocaml 的 float 类型中表示空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020526/