使用 Ramda 将函数列表应用于参数列表
Applying a list of functions to a list of arguments using Ramda
Ramda 中是否有一个函数可以将函数列表应用于参数列表,类似于 juxt()
但每个函数仅在参数列表中的相应索引处提供参数?类似于:
pipe(zip, map(([a, b]) => a(b)))([func1, func2], ['arg1', 'arg2']);
有更好的方法吗?
使用 R.zipWith 通过将函数应用于列表中每个位置相等的对,从提供的两个列表中创建一个新列表。
您也可以将回调替换为 R.call,它调用第一个参数,并将其余参数作为参数传递。
const { zipWith, call } = R;
const fn = zipWith(call);
const func1 = R.add(1);
const func2 = R.add(2);
const result = fn([func1, func2], [1, 2]);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>
Ramda 中是否有一个函数可以将函数列表应用于参数列表,类似于 juxt()
但每个函数仅在参数列表中的相应索引处提供参数?类似于:
pipe(zip, map(([a, b]) => a(b)))([func1, func2], ['arg1', 'arg2']);
有更好的方法吗?
使用 R.zipWith 通过将函数应用于列表中每个位置相等的对,从提供的两个列表中创建一个新列表。
您也可以将回调替换为 R.call,它调用第一个参数,并将其余参数作为参数传递。
const { zipWith, call } = R;
const fn = zipWith(call);
const func1 = R.add(1);
const func2 = R.add(2);
const result = fn([func1, func2], [1, 2]);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>