gpt4 book ai didi

ocaml - OCaml 中 `ignore` 函数的真正目的是什么?

转载 作者:行者123 更新时间:2023-12-01 07:31:25 25 4
gpt4 key购买 nike

有一个ignore OCaml 中的函数。

val ignore : 'a -> unit

Discard the value of its argument and return (). For instance, ignore(f x) discards the result of the side-effecting function f. It is equivalent to f x; (), except that the latter may generate a compiler warning; writing ignore(f x) instead avoids the warning.



我知道这个函数会做什么,但不明白使用它的意义。

任何人都可以解释或举例说明我们何时必须使用它?

最佳答案

你基本上回答了你自己的问题。你永远不必使用它。关键是要避免警告。如果你写 f x; () ,编译器假定您可能做错了什么。可能你以为f x返回单位,因为您很少想忽略非单位值。

然而,有时这不是真的,你真的想忽略非单位值。写作 ignore (f x)记录您知道的事实f x返回一些东西,但你故意忽略它。

请注意,在实际代码中 f x可能更复杂,所以您可能对 f x 的返回类型有误相当高。一个例子是部分应用。考虑f : int -> int -> unit .你可能不小心写了f 1 ,忘记第二个参数,警告会帮助你。另一个例子是如果你做 open Async ,然后标准库中的许多函数从返回单元更改为返回 unit Deferred.t .尤其是在第一次开始使用 Async 时,您很可能会意外地认为分号运算符适用于您真正需要使用 monadic bind 的地方。

关于ocaml - OCaml 中 `ignore` 函数的真正目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23120421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com