Jac*_*cob 5 null ocaml exception pattern-matching
我知道这看起来很基本,但基本上,我想在模式匹配中说
match value with
Null-> failwith "Empty"
|value-> #do something
Run Code Online (Sandbox Code Playgroud)
我尝试过null或none的任何变化,并且还尝试过无法使用的单位,因为value是float.
我很难过,任何帮助都会受到赞赏
小智 11
你不能.这是一个设计选择.许多语言允许任何值为null.这种方法的问题在于,当程序员不期望它时,值为空,或者必须使用对每个空值的输入值的检查来填充代码.
OCaml采用的方法是,如果值可以为null,则必须明确标记为此类.这是通过选项类型完成的:
match value with
| None -> failwith "Empty"
| Some value -> (* do something *)
Run Code Online (Sandbox Code Playgroud)
但是,如果将其直接替换为程序,则无法编译,因为OCaml会发现"值"实际上不能为空.无论创建什么都需要更新,以指示何时返回"null"值(无):
let safe_divide numerator denominator =
if denominator <> 0. then
Some (numerator /. denominator)
else
None (* division by zero *)
Run Code Online (Sandbox Code Playgroud)