将函数列表应用于 Ramda 中的值

Apply a list of functions to a value in Ramda

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

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

get_list(12)

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

你有几个选择。

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

transforms = [first_transform, second_transform];

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

get_list = R.juxt(transforms);

另一个选项是 R.ap, which applies a list of functions to a list of values. R.of 可用于将值包装在数组中。

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

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

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