如何理解特定的F#语法

vik*_*ata 0 f# arguments let

在本声明的最后:

let (a,b,c) = (1,2,3) in printfn "%i,%i" a b;;
Run Code Online (Sandbox Code Playgroud)

, 有

a b;;
Run Code Online (Sandbox Code Playgroud)

结尾"a"和"b"的用法是什么,它们是某些函数调用的参数,还是它们是前一个函数的返回值(元组)?如果是这样,let(a,b,c)的用法是什么,我想它应该定义一个由3个元素组成的元组,但是printfn在语句中做了什么?

换句话说,我如何将这个复杂的语句拆分成几个更容易理解的简短语句?我不退出得到"让......进入"语义.有什么解释吗?

谢谢.

Car*_*ten 12

let (a,b,c) = (1,2,3) in ...意思是:里面 ... a应该有价值1,b应该有价值2并且c应该有3(并且那些绑定只存在于...正文中 - 它是所有一个表达式 - 结果将是无论结果是什么...)

要做到这一点,元组(1,2,3)会被模式破坏(a,b,c)

现在在一边...printfn "%i,%i" a b- printfn "%i,%i"被编译成一个函数,它采用两个整数(以咖喱形式)并打印出来(,在它们之间).

正如您所看到的,您使用参数调用此函数(ab记住上面的那些值).

总的来说,你会打印出来 1,2

cget`s忽略写这将是如此另一种方式

let (a,b,_) = (1,2,3) in printfn "%i,%i" a b
Run Code Online (Sandbox Code Playgroud)