我正在阅读F#for C#开发者书籍,这个函数我似乎无法理解这个函数的作用是什么
let tripleVariable = 1, "two", "three"
let a, b, c = tripleVariable
let l = [(1,2,3); (2,3,4); (3,4,5)]
for a,b,c in l do
printfn "triple is (%d,%d,%d)" a b c
Run Code Online (Sandbox Code Playgroud)
输出是
triple is (1,2,3)
triple is (2,3,4)
triple is (3,4,5)
Run Code Online (Sandbox Code Playgroud)
为什么a,b,c与初始化tripleVariable?是因为在for循环中需要知道它们的类型(或类型,因为它是a Tuple)?
代码片段在定义变量时使用变量阴影a,b和c.变量首先初始化为tripleVariable(第2行)的值,但随后它们被循环内的新定义(第4行)遮蔽for.
您可以将这些视为不同的变量 - 代码等同于以下内容:
let tripleVariable = 1, "two", "three"
let a1, b1, c1 = tripleVariable
let l = [(1,2,3); (2,3,4); (3,4,5)]
for a2, b2, c2 in l do
printfn "triple is (%d,%d,%d)" a2 b2 c2
Run Code Online (Sandbox Code Playgroud)
变量阴影只允许您定义具有范围中已存在的名称的变量.它隐藏了旧变量,所有后续代码只会看到新变量.在上面的代码段中,旧的(阴影)的变量b和c甚至具有不同类型的比新的.