在 F# 中,我需要执行以下操作:
let price k s t r v =
  let d1 = d1 k s t r v
... and so on
我真的厌倦了在将所有参数传递给函数时列出它们。除了将参数转换为参数对象(我不能做的事情)之外,还有什么方法可以对参数进行分组?我在想类似的东西
let price (k s t r v as foo) =
  let d1 = d1 foo
有任何想法吗?谢谢。
在 F# 中,我需要执行以下操作:
let price k s t r v =
  let d1 = d1 k s t r v
... and so on
我真的厌倦了在将所有参数传递给函数时列出它们。除了将参数转换为参数对象(我不能做的事情)之外,还有什么方法可以对参数进行分组?我在想类似的东西
let price (k s t r v as foo) =
  let d1 = d1 foo
有任何想法吗?谢谢。
w, x, y, z您可以通过像这样的高阶函数有效地将参数组合在一起(调用它们)
let batchedArgs f = f w x y z
现在batchedArgs是原始函数参数的闭包。您只需将另一个函数传递给它,该函数采用相同数量/类型的参数,它们将被应用。
// other functions which you wish to pass the args to
let sub1 w x y z = 42
let sub2 w x y z = true
// main routine
let doStuff w x y z =
    // one-time declaration of batching function is
    // the only time you need to list out the arguments
    let batchedArgs f = f w x y z
    // from then on, invoke like this
    batchedArgs sub1
    // or like this, which looks more like a traditional function call
    sub2 |> batchedArgs