将函数列表应用于参数
Apply a list of function to a parameter
我正在寻找这样的东西
const applicate = (functions, parameters) => {
let result = parameters;
for (let i = 0; i < functions.length; i++) {
result = functions[i](result);
}
return result;
}
用法最终是这样的:
applicate([fn,...], parameter)
和
const fn = (parameter) => parameter * 2
applicate([fn, fn], 2) = 8
谢谢!
可能 pipe
或 compose
会有所帮助
const applicate = (fns, ...args) => R.pipe(...fns)(...args);
console.log(
applicate([
R.add(23),
R.multiply(3),
R.divide(2),
], 100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>
我建议不要采用这种自定义 applicate
解决方案,
如您所见,它只是对管道的行为进行了别名...
您可以尝试习惯 Pipe/Compose
,因为它们是 fp 工具箱的重要组成部分,人们已经非常习惯这样的词汇表。
const applicate = R.pipe(
(n) => n * 2,
(n) => n * 2,
);
console.log(
applicate(100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>
不错的阅读:https://randycoulman.com/blog/2016/05/31/thinking-in-ramda-combining-functions/(管道章节)
我正在寻找这样的东西
const applicate = (functions, parameters) => {
let result = parameters;
for (let i = 0; i < functions.length; i++) {
result = functions[i](result);
}
return result;
}
用法最终是这样的:
applicate([fn,...], parameter)
和
const fn = (parameter) => parameter * 2
applicate([fn, fn], 2) = 8
谢谢!
可能 pipe
或 compose
会有所帮助
const applicate = (fns, ...args) => R.pipe(...fns)(...args);
console.log(
applicate([
R.add(23),
R.multiply(3),
R.divide(2),
], 100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>
我建议不要采用这种自定义 applicate
解决方案,
如您所见,它只是对管道的行为进行了别名...
您可以尝试习惯 Pipe/Compose
,因为它们是 fp 工具箱的重要组成部分,人们已经非常习惯这样的词汇表。
const applicate = R.pipe(
(n) => n * 2,
(n) => n * 2,
);
console.log(
applicate(100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>
不错的阅读:https://randycoulman.com/blog/2016/05/31/thinking-in-ramda-combining-functions/(管道章节)