你如何在Javascript ES6中发现/反转咖喱?

时间:2017-07-28 16:01:48

标签: javascript functional-programming currying

我有一个函数,我必须包装另一个函数,如果它存在或替换它,如果它没有。这意味着参数的数量会根据情况而变化。

这就是我的意思 -

列列表:

const myColumns = [
    {name: 'My Field', formatter: function(row, cell, value, colDef, data){
        ... do stuff to value...
        return value;
    },
    {name: 'My Other Field'}
]

有些人有格式化程序而有些人没有格式化程序。这是我对包装'的部分解决方案。功能:

return myColumns.map(columns => {
    function wrapFormatting(value){
        return `<span class="foobar">${value}</value>`
    }
    if( column.formatters ) {
        column.formatters = _.flow(column.formatter, wrapFormatting);
    } else {
        column.formatter = (row, cell, value) => value => wrapFormatting;
    }
})

我天真的期望是,在else阻止格式化程序中,我们反向咖喱&#39; / uncurry这三个参数,最终看起来像这样:

column.formatter = function(row, cell, value){
    wrapFormatting(value);
}

但是eslint告诉我,值是a)已在上限范围内声明,b)已定义但从未使用过。如果我更改其中一个(我有(row, cell, value) => val => wrapFormatting我将它们定义为“但从未使用过”#。

我觉得我错过了一个技巧,因为我不能(row, cell, value) => value => wrapFormatting(value),因为它会立即调用该函数,当column.formatter是时,它不会被调用调用。

1 个答案:

答案 0 :(得分:3)

您正在寻找

[tf.shape(A)[0], n, m]

不确定为什么您认为自己有[?, n, m]作为参数两次而且从不致电column.formatter = (row, cell, value) => wrapFormatting(value); 但返回它。