2015-02-03 2 views
0

Я учусь 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 

Почему?

ответ

3

Здесь - F # не назначает переменную, вы являетесь образцом.

Синтаксис здесь следует из того, как вы бы создать запись, как вы сопоставление с образцом для него - обратите внимание на сходство между:

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

и

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

и более экстремальным примером:

let f3 {first="bob"; last="smith"} = 
Смежные вопросы