私は関数があります。存在する場合は別の関数をラップするか、そうでなければ置き換える必要があります。これは、状況によって引数の数が変化することを意味します。Javascript ES6でどうやってカレーをやり直しますか?
は、ここで私が何を意味するかだ - 列の
一覧:
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
ブロックフォーマッタで3つの引数をuncurry、それはこのように見える終わるだろうということです。
column.formatter = function(row, cell, value){
wrapFormatting(value);
}
しかし、値がa)すでに上限スコープで宣言されていて、b)定義されていますが使用されていないことをeslintが教えています。私はそれらのうちの1つを変更すると(私は(row, cell, value) => val => wrapFormatting
を持っていますが、それは両方とも '定義されていますが、決して使用されていません'という意味です)。
あなたは二度パラメータとしてvalue
を持っているとwrapFormatting
が、リターンを呼び出すことがなかったと思った理由の機能、およびcolumn.formatterが呼び出されたときに呼び出されることはありません。
"*'(行、セル、値)=>値=> wrapFormatting(値) 'はすぐに関数を呼び出す*" - なぜそう思うのですか? – Bergi
このビットのために@Bergi * 'wrapFormatting(value)' * – Pureferret
あなたの 'function(row、cell、value){...'はまったく同じビットを含みます。それはすぐにそこに呼び出されませんでしたか? – Bergi