if reelID = reelWeights.Count - 1
then Array.fold calc1 (0L,0) reelWeights.[reelID]
else Array.fold calc2 (0L,0) reelWeights.[reelID]
Run Code Online (Sandbox Code Playgroud)
我尝试使用管道,似乎放慢了一点(不知道为什么):
reelWeights.[reelID]
|> (if reelID = reelWeights.Count - 1 then Array.fold calc1 else Array.fold calc2) (0L,0)
Run Code Online (Sandbox Code Playgroud)
如果我做
let calc x = if x then calc1 else calc2
Array.fold (calc reelID = reelWeights.Count - 1) (0L,0) reelWeights.[reelID]
Run Code Online (Sandbox Code Playgroud)
那么在循环中冗余检查条件的成本看起来很不错.
假设calc1并且calc2具有相同的签名(或者如果它们是值而不是函数,则是相同的类型):
let calc = if reelID = reelWeights.Count - 1 then calc1 else calc2
Array.fold calc (0L, 0) reelWeights.[reelID]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |