我写了这个F#代码:
let tuples = [|("A",1,0);("A",2,3);("A",3,6)|]
let tupleSubset =
tuples
|> Seq.map(fun values ->
values.[0],
values.[2])
printfn "%A" tupleSubset
Run Code Online (Sandbox Code Playgroud)
我得到:运算符'expr.[idx]'已根据此程序点之前的信息用于不确定类型的对象.考虑添加其他类型约束
谁能告诉我我做错了什么?
解决错误的一种简单方法如下:
let tuples = [|("A",1,0); ("A",2,3); ("A",3,6)|]
let tupleSubset = tuples |> Seq.map (fun (a, b, c) -> a, b)
printfn "%A" tupleSubset
Run Code Online (Sandbox Code Playgroud)
至于为什么你所得到的错误:请注意,您提领的那种指标与尝试values.[0]
,并values.[1]
适用于数组,字典等,但不能用于元组,而每个values
有型string * int * int
.
由于您不需要元组的第三个元素,您甚至可以通过编写第二行来选择不将其绑定到符号:
let tupleSubset = tuples |> Seq.map (fun (a, b, _) -> a, b)
Run Code Online (Sandbox Code Playgroud)