【发布时间】:2016-02-24 03:12:01
【问题描述】:
我有一个 F# 函数,我想尝试改变一些参数并测试所有这些组合。这是正确的方法吗? (括号有点密集...):
let MyFunc a b c x y z =
...
q
let UploadResult a b c x y z q =
...
()
let a = 5.0
let b = 0
let c = System.DateTime.Today
let xList = [-1.0; 0.0; 1.0]
let yList = [2; 4; 6; 8; 10]
let zList = [0.1; 0.001]
xList |> List.iter (fun x ->
(yList |> List.iter (fun y ->
(zList |> List.iter (fun z ->
MyFunc a b c x y z
|> UploadResult a b c x y z ))) ))
|> ignore
所以我想上传 3x5x2=30 个结果,并且写的很好。感谢您的任何建议。
【问题讨论】:
-
问题是什么,或者您只想进行代码审查? (在这种情况下,您可能会先清理一下 - 例如
Let a = 5.0将不起作用(语法错误)并且您的缩进很远 -
好吧,在尝试运行我的草稿之前,我在发帖时有点超前,因为应用程序非常大(至少 IDE 没有抱怨)。但我希望笼统地问一下嵌套 List.iter 是否是惯用的方法(就像我会反身地用另一种语言编写嵌套的 For 循环一样)。
-
嵌套的 for 循环在这里也可以工作;可以做的是在循环之前在两个函数中部分应用 a、b 和 c
-
谢谢。以上内容可能太明显了,无法问。但很多时候,对于 F# 的新手,看到新的聪明方法时,我会感到惊讶和印象深刻。