ignoreOCaml中有一个功能.
val ignore : 'a -> unit
Run Code Online (Sandbox Code Playgroud)
丢弃其参数的值和return().例如,ignore(fx)丢弃副作用函数f的结果.它相当于fx; (),但后者可能会生成编译器警告; 写ignore(fx)代替避免警告.
我知道这个函数会做什么,但是没有明白使用它.
任何人都可以解释,或给了我们一个例子要使用它?
你基本上回答了自己的问题.你永远不必使用它.关键是要避免警告.如果你写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绑定的地方.