Ocaml - 空引用

use*_*133 2 ocaml reference

如何创建空引用?我的意思是像

let x = ref Null
Run Code Online (Sandbox Code Playgroud)

或者

let x = ref None
Run Code Online (Sandbox Code Playgroud)

或者

let x = ref ()
Run Code Online (Sandbox Code Playgroud)

And*_*erg 5

机器学习中没有这样的事情。type 的值t ref 始终保存 type 的值t。这样就可以避免空指针异常的祸患。

如果您确实需要一个可为空的引用,那么您必须创建一个类型的引用t option ref

let r : int option ref = ref None
...
r := Some 5
Run Code Online (Sandbox Code Playgroud)

然后类型系统确保您不会忘记处理 None 情况,例如使用匹配:

match !r with
| Some n -> ...
| None -> (* What now? *)
Run Code Online (Sandbox Code Playgroud)

不过,你应该很少需要这样的东西。如果您发现自己需要一个选项引用,那么您应该首先尝试重构问题。