在右边赋值

Assign value on the right side

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

为什么?

此处 - F# 未分配变量,您正在进行模式匹配。

此处的语法遵循您在模式匹配时创建记录的方式 - 请注意以下之间的相似性:

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

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

还有一个更极端的例子:

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