我猜你应该问MSDN,但简而言之:
let
结合具有符号价值。该值可以是简单类型,如int
或string
,但它也可以是一个函数。在FP函数中是值,可以用与这些类型相同的方式处理。
fun
是一个关键字,它引入了一个匿名函数 - 如果您熟悉C#,请考虑使用lambda表达式。
这些是两个重要的,从你看到的所有其他用法可以被认为是这两个语法糖。所以要定义一个函数,你可以这样说:
let myFunction =
fun firstArg secondArg ->
someOperation firstArg secondArg
而这是非常明确的说法。你声明你有一个函数,然后将它绑定到myFunction
符号。
但你可以通过只混为一谈匿名函数声明并将其与let
绑定到一个符号保存自己一些打字:
let myFunction firstArg secondArg =
someOperation firstArg secondArg
什么function
确实是有点麻烦 - 你把一个匿名单参数的函数声明用match
表达式,通过匹配一个隐含的参数。所以这两个是等效的:
let myFunction firstArg secondArg =
match secondArg with
| "foo" -> firstArg
| x -> x
let myFunction firstArg = function
| "foo" -> firstArg
| x -> x
如果你刚开始使用F#,我会避开那一个。它有其用途(主要用于为地图/过滤器等提供简洁的高阶函数),但是导致代码一览无遗。
它会更容易一点给你看的替代品,如果你还告诉我们什么'V'和'A'是。 –
“函数”是一种在流水线表达式中自带的“匹配”。例如x |>函数| case1 - > ... | case2 - > ...这是一个很好的风格。 – sgtz