在右侧分配值

时间:2015-02-03 09:31:47

标签: f#

我正在学习F#,我有以下代码:

type Name = {first:string; last:string} // define a new type
let bob = {first="bob"; last="smith"}   // define a value 

// single parameter style
let f1 name =                       // pass in single parameter   
   let {first=f; last=l} = name     // extract in body of function 
   printfn "first=%s; last=%s" f l

// match in the parameter itself
let f2 {first=f; last=l} =          // direct pattern matching 
   printfn "first=%s; last=%s" f l 

// test
f1 bob
f2 bob

我的背景是命令式编程,价值分配的工作原理如下:

f = first

但上面的代码使用

在右侧分配值
first=f

为什么?

1 个答案:

答案 0 :(得分:3)

这里 - F#没有分配变量,你是模式匹配。

这里的语法来自于如何创建记录,因为你是模式匹配它 - 请注意以下几者之间的相似性:

let f2 {first=f; last=l} =  

let bob = {first="bob"; last="smith"}

和一个更极端的例子:

let f3 {first="bob"; last="smith"} =