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

使用Ramda通过多个操作从值创建JavaScript对象,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,如何最好地在中创建此函数 其目的是维护函数调用样式,并以最简单的方式指定(并连接)操作。我看不出更改该函数的真正原因 它清晰易读,并且很好地表达了你想要做的事情。假设您仍然想传递它新缓冲区('abcd')或其他类似的东西,我看不出有什么需要做的 如果你想做一个无点数的版本,那当然可以,但我认为这是不可取的。当它使代码更具可读性时,这是有用的,但在这里它不会这样做。这是我的第一次尝试,但并不漂亮: var get_parts = R.converge(R.unapply(R.zipObj(['a'

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


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

我看不出更改该函数的真正原因

它清晰易读,并且很好地表达了你想要做的事情。假设您仍然想传递它
新缓冲区('abcd')
或其他类似的东西,我看不出有什么需要做的

如果你想做一个无点数的版本,那当然可以,但我认为这是不可取的。当它使代码更具可读性时,这是有用的,但在这里它不会这样做。这是我的第一次尝试,但并不漂亮:

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

谢谢你,斯科特。我想知道是否有一种写作的方式来消除对明确论点的需要,但我很乐意接受你的建议。也许有人能想出一个比我更好的——很可能——比原著更可读——我想不太可能。对我来说,无积分是一种很好的技术,但我们往往不必要地沉迷于此。如果您的环境允许,我看到的对原始函数的唯一真正清理是使用胖箭头,而不是
函数
关键字。
var get_parts = R.converge(R.unapply(R.zipObj(['a', 'b'])), [ 
                           R.invoker(1, 'readInt16LE')(0), 
                           R.invoker(2, 'slice')(2, 4)
]);