如何在Ramda.js的map中避免使用自定义Lambda函数?
替代自定义Lambda函数的Ramda方案
你可以用Ramda内置的R.applyTo或者结合R.call与占位符来替代自定义箭头函数,具体如下:
方案1:使用R.applyTo
R.applyTo接受一个值,返回一个能将传入的函数应用到该值上的高阶函数,完美匹配你的需求:
import R from 'ramda'; const arrFn = [R.multiply(2), R.identity, R.add(3)]; const testData = 2; const result = R.map(R.applyTo(testData))(arrFn); console.log('result', result); // 输出 [4, 2, 5]
方案2:使用R.call与占位符R.__
利用Ramda的占位符实现部分应用,R.call(R.__, testData)会生成一个等待接收函数参数的函数,执行时会把传入的函数和testData作为参数调用R.call:
import R from 'ramda'; const arrFn = [R.multiply(2), R.identity, R.add(3)]; const testData = 2; const result = R.map(R.call(R.__, testData))(arrFn); console.log('result', result); // 输出 [4, 2, 5]
两种方案都能达到和原代码完全一致的效果,且更贴合Ramda的函数式编程风格,无需手动编写Lambda函数。
内容的提问来源于stack exchange,提问作者vito
相关产品推荐
相关产品推荐

