当使用OCaml时,我几乎总是使用下划线通配符let _ = exp,特别是当结果exp不重要时,但其中的计算是.例如:
let _ = print_endline "abc" in ... let _ = a := !a + 1 in ... let _ = do_some_thing ... in
所以,我只是想知道是否有广泛使用的副作用let _ = ...?
Dan*_*zli 10
副作用是将来在您的软件中跟踪的烦恼.问题let _ =是它会默默地忽略你想要的部分应用程序.假设您编写以下内容:
let f a b = ...
let _ = f 3 4
Run Code Online (Sandbox Code Playgroud)
并且在将来你添加一个参数f:
let f a b c = ...
Run Code Online (Sandbox Code Playgroud)
表达式let _ = f 3 4仍将静默编译,您的程序将不会调用该函数,让您想知道发生了什么.如果你需要忽略非单位结果,总是让()并使用它会好得多ignore:
let () = ignore (f 3 4)
let () = print_endline "abc"
Run Code Online (Sandbox Code Playgroud)
使用let _ = ...应该被认为是不好的风格.
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |