【问题标题】:Apply a list of functions to a value in Ramda将函数列表应用于 Ramda 中的值
【发布时间】:2016-04-01 23:18:08
【问题描述】:

如何在Ramda 中最好地创建此函数?

function get_list (value) {
  return [
    first_transform(value),
    second_transform(value)
  ]
}

get_list(12)

我猜这是 map 函数的逆函数。

【问题讨论】:

    标签: javascript functional-programming ramda.js


    【解决方案1】:

    你有几个选择。

    假设你的函数已经在列表中:

    transforms = [first_transform, second_transform];
    

    第一个选项是使用R.juxt,它通过创建一个新函数将给定函数列表应用于新函数接收的值,从而几乎完全符合您的要求。

    get_list = R.juxt(transforms);
    

    另一个选项是R.ap,它将函数列表应用于值列表。 R.of 可用于将值包装在一个数组中。

    get_list = R.compose(R.ap(transforms), R.of);
    

    或者最后,R.map 可用于接收列表中的每个函数并将其应用于值的结果返回。

    get_list = value => R.map(fn => fn(value), transforms);
    

    【讨论】:

    • R.map 不返回数组,而不是一个值吗?
    • @RafałŁużyński R.map 如果您正在映射一个数组,则确实返回一个数组,就像在这个例子中一样。如果您映射到其他支持的类型(例如函数和对象),它也可以返回其他类型。详情请参阅ramdajs.com/docs/#map
    猜你喜欢
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2021-07-28
    • 2013-07-25
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多