阅读我有了一个例子功能的控制台应用程序行:功能与在其他数据文件
let aFxUsedFromTheEntryPoint() =
let aHelperFx (cThing) (iThing) (qThing) =
Unchecked.defaultof<Quote>
let c =
thisFx() //this line reads in and process lots of data; takes some time
let i =
thatFx() //this line also reads in and processes lots of data; takes some time
aList
|> List.map (fun q -> aHelperFx c i q)
如何在函数中使用的c
和i
变量?他们在最后两行之前是否只读过一次,并且只是反复使用,然而长aList
是?或者他们在'aList'中每q
执行一次?
如果是后者,有没有更好的方法去编写这样的函数?我可以以某种方式编写函数,使c
和i
只运行一次,但通过了很多次,但必须在aList
?
这也许是最常见的F#初学者问题;看到答案[这里](http://stackoverflow.com/questions/41049285/when-are-f-function-calls-evaluated-lazily-or-immediately/41049323#41049323)。 – TeaDrivenDev
为什么人们再次低估完全有效的问题,甚至不说为什么? – TeaDrivenDev
我的猜测是他们的论点是我应该使用搜索框。虽然,我甚至没有想到F#会被急切地评估,除非另有说明(或者在'Sequence'上),因此'c'和'i'应该一次读入内存,然后重复使用。这意味着为了节省时间,我需要查看实际功能中的其他位置。感谢链接@TeaDrivenDev。 – Steven