最好|>忽略或返回()

Ant*_*ell 3 f#

所以这只是一个好奇心的问题.

如果我想返回单位,这是更好的做法?

|> ignore
Run Code Online (Sandbox Code Playgroud)

要么

()
Run Code Online (Sandbox Code Playgroud)

可能还有其他方法.我只想知道什么是最好的,考虑到这些:

  • 什么是最高效的
  • 什么是生产环境的最佳实践
  • 什么是长期维护最可读的

Tom*_*cek 13

我认为你正在比较这里不太可比的东西.该()值允许您创建单位值,而|> ignore您可以使用该值忽略其他结果.两者并不完全相同:

如果您正在调用函数并且想要忽略结果,则可以只编写:

doStuff () |> ignore
Run Code Online (Sandbox Code Playgroud)

但是做同样的事情()会要求你忽略警告:

doStuff () // warning: Result is ignored
()
Run Code Online (Sandbox Code Playgroud)

...或者您可以_使用let绑定将结果分配给忽略模式:

let _ = doStuff ()
()
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,使用ignore更好 - 它是内联的,因此它没有性能影响,它导致代码更容易阅读.

也就是说,有些情况下你只需要创建一个单位价值然后()就是你所需要的(并且没有明显的方法ignore会让你这样做).例如:

match optMessage with
| Some message -> printfn "ANNOUNCEMENT: %s" message
| None -> ()
Run Code Online (Sandbox Code Playgroud)

你可以替换()使用42 |> ignore,以获得相同的结果,但它会是愚蠢的!


Tim*_*ers 6

ignore 是一个内联函数,因此两者都会产生完全相同的 IL。

ignore 更明确,因此更具可读性,这就是它存在的原因,因此您可能更喜欢它。