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

时间:2011-01-01 22:08:30

标签: f#

  

可能重复:
  F# explicit match vs function syntax

您好,

我正在学习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

'function'是“fun x - > match x with”的简写吗?这两者之间是否有任何运行时/优化差异?为什么我更喜欢使用一个而不是另一个?

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

这只是语法糖。就像在C#c => c = 'A'中一样,delegate (char c) { return c = 'A'; }是语法糖。这一切都归结为个人偏好。