【发布时间】:2020-09-04 14:54:03
【问题描述】:
我是 F# 的新手, 我有一个包含数组的列表,每个数组包含 7 个字符串。 我想循环遍历数组并稍后执行某种 Array.map,
但是我的问题是我无法将单个数组发送到其他函数。
我不想使用 for 循环,而是专注于仅使用管道和映射的函数式方式。
let stockArray =
[[|"2012-03-30"; "32.40"; "32.41"; "32.04"; "32.26"; "31749400"; "32.26"|];
[|"2012-03-29"; "32.06"; "32.19"; "31.81"; "32.12"; "37038500"; "32.12"|];
[|"2012-03-28"; "32.52"; "32.70"; "32.04"; "32.19"; "41344800"; "32.19"|];
[|"2012-03-27"; "32.65"; "32.70"; "32.40"; "32.52"; "36274900"; "32.52"|];]
let tryout =
stockArray
|> List.iter;;
输出抱怨 List.iter:
error FS0001: Type mismatch. Expecting a
'string [] list -> 'a' but given a
'('b -> unit) -> 'b list -> unit'
The type 'string [] list' does not match the type ''a -> unit'
在尝试 Array.iter 时,同样的区别:
error FS0001: Type mismatch. Expecting a
'string [] list -> 'a' but given a
'('b -> unit) -> 'b [] -> unit'
The type 'string [] list' does not match the type ''a -> unit'
在 C# 中,我会简单地使用 foreach 开始处理我的数组,一次处理一个,但使用 F# 我感觉真的卡住了。
感谢您的帮助
【问题讨论】:
-
List.iter 需要一个函数,它将为列表的每个成员调用,看看它的签名。
-
确实,对不起,我对签名感到困惑。我正在努力掌握它告诉我的内容。所以可能Iter不是我想要的,因为它需要吐出“Unit”......我需要吐出“string []”对吗?
标签: arrays list loops f# iteration