我需要在代码中的许多地方调用一个带有两个参数的函数。
hash(itemToHash, algorithm) { ... }
我不想在每个函数调用中传递algorithm
参数。
我可以创建一个带有一个参数的函数来委托调用:
md5hash(itemToHash) {
hash(itemToHash, 'md5')
}
或者我可以使用部分应用程序来绑定algorithm
参数。
我想要的方法是创建一个更高阶函数,返回部分应用的哈希函数,我会从代码中的许多地方调用这个更高阶函数来获得单个参数函数。
但是,这不是不必要的复杂吗?与简单的呼叫委派相比,我认为第二种方法没有任何好处。答案 0 :(得分:1)
假设你有一些函数partial
,它将参数部分地应用于其他函数。您不需要在代码中的任何地方调用此partial
函数,以便使用部分应用的函数。
实际上你只需要调用一次。要生成部分应用的函数,然后将其绑定到名称。
md5Hash := partialRight(hash, 'md5')
至于我的理解甚至
md5Hash(itemToHash) {
hash(itemToHash, 'md5')
}
是某种部分应用。虽然是静态的。 partial
函数的好处是能够在运行时创建部分应用的函数。