所以这只是一个好奇心问题。
如果我想归还单位,这是更好的做法?
|> ignore
或
()
可能还有其他方法。我只想知道什么是最好的,考虑到这些:
答案 0 :(得分:12)
我认为你正在比较这里不太可比的东西。 ()
值可让您创建单位值,而|> ignore
则可用于忽略其他结果。两者并不完全相同:
如果您正在调用某个函数并且想要忽略该结果,则只需编写:
doStuff () |> ignore
但对()
执行相同操作会要求您忽略警告:
doStuff () // warning: Result is ignored
()
...或者您可以使用_
绑定将结果分配给忽略模式let
:
let _ = doStuff ()
()
因此,在这种情况下,使用ignore
更好 - 它是内联的,因此它没有性能影响,它导致代码更容易阅读。
也就是说,有些情况下你只需要创建一个单位值然后()
就是你所需要的(并且没有明显的方式ignore
会让你这样做)。例如:
match optMessage with
| Some message -> printfn "ANNOUNCEMENT: %s" message
| None -> ()
您可以将()
替换为42 |> ignore
以获得相同的结果,但这会很愚蠢!
答案 1 :(得分:4)
ignore
是一个内联函数,因此两者都会产生完全相同的IL。
ignore
更明确,因此更具可读性,这就是它存在的原因,所以你应该更喜欢它。