我正在学习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
为什么?
答案 0 :(得分:3)
这里 - F#没有分配变量,你是模式匹配。
这里的语法来自于如何创建记录,因为你是模式匹配它 - 请注意以下几者之间的相似性:
let f2 {first=f; last=l} =
和
let bob = {first="bob"; last="smith"}
和一个更极端的例子:
let f3 {first="bob"; last="smith"} =