gpt4 book ai didi

arrays - F# : iterate through int array

转载 作者:行者123 更新时间:2023-12-01 15:54:26 27 4
gpt4 key购买 nike

我想遍历一个数组,每个元素都有三个整数。是否可以遍历此数组中的每个整数?下面的代码不起作用,因为它给出了以下错误:

“'int * int * int'类型与'seq<'a>'类型不兼容”

module Practice2

let dataSet =
[|10, 20, 10; -20, -30, 10; 30, 50, 0;|]
|> Seq.mapi (fun i elem ->
elem
|> Seq.map (fun a -> printf("TEST"))
);

我是 F# 的新手,所以如果这是完全错误的方法,请纠正我。

最佳答案

欢迎使用 F#。您的数据是一个三元组数组。当您计算此表达式时,F# 说的也是如此:

[|10, 20, 10; -20, -30, 10; 30, 50, 0|]
// val it : (int * int * int) [] = [|(10, 20, 10); (-20, -30, 10); (30, 50, 0)|]

当然你可以用一个索引来迭代这个数组。通常,使用与您使用的数据结构相关的模块中的函数,此处为 Array

[|10, 20, 10; -20, -30, 10; 30, 50, 0|]
|> Array.iteri (printfn "%i: %A")
// 0: (10, 20, 10)
// 1: (-20, -30, 10)
// 2: (30, 50, 0)

现在,对于真正的数组数组,您可以轻松定义自己的函数。我们将构建一个迭代此数组数组的函数。因此,两个索引 ij,用于外部和内部数组。

module Array =
let iteri2 f = Array.iteri (fun i -> Array.iteri (f i))
// val iteri2 : f:(int -> int -> 'a -> unit) -> ('a [] [] -> unit)
[|[|10; 20; 10|];[|-20; -30; 10|];[|30; 50; 0|]|]
|> Array.iteri2 (printfn "%i, %i: %i")
// 0, 0: 10
// 0, 1: 20
// 0, 2: 10
// 1, 0: -20
// 1, 1: -30
// 1, 2: 10
// 2, 0: 30
// 2, 1: 50
// 2, 2: 0

关于arrays - F# : iterate through int array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60852617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com