如何使用拉达与两个以上的功能?

这是我第一次尝试用Ramda进行函数式编程。我正在尝试通过组合多个函数来构建api端点字符串。如何使用拉达与两个以上的功能?

这工作:

const endpoint = str => str && str.toUpperCase() || 'default' 

const protocol = str => `https://${str}`

let finalEndpoint = R.compose(protocol, endpoint)

var result = finalEndpoint('api.content.io')

结果是现在https://API.CONTENT.IO预期

但现在我要更多的功能添加到这个管道:

const params = val => `?sort=desc&part=true` 

const query = val => `query={ some: value, another: value}`

但是,当我尝试撰写一切一起像这样:

let finalEndpoint = R.compose(protocol, endpoint, params, query) 

var result = finalEndpoint('api.content.io')

我只是得到https://?SORT=DESC&PART=TRUE而我想

https://API.CONTENT.IO??sort=desc&part=true&query={ some: value, another: value}

什么样的组合链接和组成做我用它来得到上面的结果呢?

回答:

可能很熟悉Ramda用户这方面的一个变化将是匿名函数管道写这篇文章:

const finalEndpoint = pipe(

or(__, 'default'),

concat('https://'),

concat(__, '?sort=desc&part=true&'),

concat(__, 'query={ some: value, another: value}')

)

finalEndpoint('api.content.io');

//=> https://api.content.io?sort=desc&part=true&query={ some: value, another: value}

这样一个无点的版本可能会或可能不会符合您的口味,但这是一个有趣的选择。

回答:

var R = require('ramda'); 

const endpoint = str => `${str}` || 'default'

const protocol = str => `https://${str}`

const params = str => `${str}?sort=desc&part=true&`

const query = str => `${str}query={ some: value, another: value}`

let finalEndpoint = R.compose(query, params, protocol, endpoint)

var result = finalEndpoint('api.content.io')

console.log(result)

原来我没有使用str参数正确

以上是 如何使用拉达与两个以上的功能? 的全部内容, 来源链接: utcz.com/qa/265798.html

回到顶部