使用Ramda通过多个操作从值创建JavaScript对象

时间:2015-12-23 12:07:51

标签: javascript functional-programming ramda.js

我如何在Ramda中最好地创建此功能?

function get_parts (buffer) {
  return {
    a: buffer.readInt16LE(0),
    b: buffer.slice(2, 4)
  }
}

get_parts(new Buffer('abcd'))

目的是维护函数调用样式并以最简单的方式指定(和连接)操作。

1 个答案:

答案 0 :(得分:2)

我没有看到改变这种功能的真正原因。

它干净,可读,并且很好地表达了您正在尝试做的事情。假设您仍想传递new Buffer('abcd')或某些等效内容,我无法看到有任何事情要做。

如果您正在寻求制作无分数版本,那当然可以做到,但我不认为这是可取的。当它使代码更具可读性时,这是有用的,但它不会在这里这样做。这是我的第一次尝试,但并不漂亮:

var get_parts = R.converge(R.unapply(R.zipObj(['a', 'b'])), [ 
                           R.invoker(1, 'readInt16LE')(0), 
                           R.invoker(2, 'slice')(2, 4)
]);