我有这样的烟斗
pipe(
getUserData,getLocationData,someFunctionThatNeedBothUserAndLocationData
)(input)
我需要具有这样的功能,可以同时访问用户和位置数据
function someFunctionThatNeedBothUserAndLocationData(user,location){
// do something
}
如何在函数式编程中做类似的事情?
我有这样的烟斗
pipe(
getUserData,getLocationData,someFunctionThatNeedBothUserAndLocationData
)(input)
我需要具有这样的功能,可以同时访问用户和位置数据
function someFunctionThatNeedBothUserAndLocationData(user,location){
// do something
}
如何在函数式编程中做类似的事情?
实际上pipe
不可能实现,因为后续函数是一元的(它们将前一个函数的结果作为参数)。我认为收敛功能会在这里有所帮助!
const log = (user,location) => {
console.log(`${user.name} is in ${location}`);
};
const getUserData = () => ({ name: 'Giuseppe' });
const getUserLocation = () => 'Bologna';
R.converge(log,[
getUserData,getUserLocation,])();
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>
,
我希望我还不晚。
const pipedFunction = pipe(
getUserData,getLocationData,someFunctionThatNeedBothUserAndLocationData
)(input)
const getLocationData = (userData) => [user,location]
const someFunctionThatNeedBothUserAndLocationData = (arg) => {
const [user,location] = arg;
}
或
const pipedFunction = pipe(
getUserData,someFunctionThatNeedBothUserAndLocationData
)(input)
const getLocationData = (userData) => {user,location}
const someFunctionThatNeedBothUserAndLocationData = (arg) => {
const {user,location} = arg;
}