何时使用'功能'而不是'有趣'?

Vau*_*Boy 14 f#

可能重复:
F#显式匹配vs函数语法

你好,

我正在学习F#,并对"有趣"和"功能"关键词感到困惑.我的理解是,这些都是一样的.

// Use 'fun'
let testFunction1 = fun argument -> match argument with
                                    | Some(x) -> x
                                    | None    -> 0

// Use 'function'
let testFunction2 = function
                    | Some(x) -> x
                    | None    -> 0
Run Code Online (Sandbox Code Playgroud)

"功能"只是"有趣的x - >匹配x"的简写吗?这两者之间是否有任何运行时/优化差异?为什么我更喜欢使用一个而不是另一个?

就目前而言,"功能"似乎使代码更难以阅读.我错过了什么吗?

kam*_*aci 12

函数只允许一个参数但允许模式匹配,而fun是定义函数的更通用和灵活的方法.看看这里:http://caml.inria.fr/pub/docs/manual-ocaml/expr.html

  • 另一方面,当你使用`function`时,你可以用`|`分隔多个子句. (3认同)
  • 函数允许模式匹配,但仅限于最后一个参数* (2认同)

Cha*_*ion 2

它只是语法糖。就像 C# 中的c => c = 'A'语法糖一样delegate (char c) { return c = 'A'; }。这一切都取决于个人喜好。