例如,如果我将F x y
定义为currying函数,并且在环境中使用了部分函数(F x)
,那么我应该let binding
将它作为一个命名函数性能? (比较缓存property
的{{1}},因为通常无需缓存object
,例如property
)
Array.Length
v.s。
let Gofrom (board: int[][]) (color: int) (reelID, reelPosition) (direction: Direction) =
let rec walkfrom x =
match direction.Target x with
| (a, _ | _, a) when a = -1 || a = board.Length -> x
| a, b when board.[a].[b]= color -> walkfrom (a, b)
| _ -> x
walkfrom (reelID, reelPosition)
答案 0 :(得分:3)
性能应该没有区别,但我肯定会使用第一种形式,因为它清楚地表明哪些args在调用之间没有变化。
顺便说一句,这并不是关于currying,因为你将代码重构为一个单独的函数(闭包)以避免传递args。