[JavaScript] currying-function


currying-function


リドスミッドソフトを手作りした例を学ぶ過程で、使ったことのない文法に出会い、整理した.
const middleware = store => next => action => {
  // 하고 싶은 작업...
}
  • ビット関数は、curry関数を使用してnextに蓄積されたミドルウェアを実行し、最後にdispatchを使用してactionを実行するreduckサンプルコードです.
  • 使用する理由

  • カードリングにより、関数の付与効果を低減できます.
  • は、毒性および保守性のために使用される.
  • 使用方法


  • ライブラリ関数はパラメータとして関数を受け入れます.

  • 実行時にパラメータとして受信した関数パラメータを使用する関数を返します.

  • 返される関数は、モジュールによって渡される関数を覚えます.

  • 2つの単純な数の和を求める関数があると仮定する.
  • function sum(a, b) {
      return a + b;
    }
  • をcurry-functionに変換し、以下のように実現する.
  • function currying(func) { 
      return function(a) {   
        return function(b) {
          return func(a, b); 
        }
      }
    }
  • currying関数が実行されると、次の関数が返されます.
  • の場合、パラメータfuncはCloserとなります.
  • function(a) {   
        return function(b) {
          return func(a, b); 
        }
      }
  • 以降、関数は呼び出しポイントで次の関数を返します.
  • このときfunc,aはレコーダとなる.
  • function(b) {
          return func(a, b); 
        }
  • は、最後のパラメータbを受信し、呼び出し時に記憶されたfunc、a、bを使用して結果を返す.
  • const curry = currying(sum)(10)(20);
    // 30
  • は矢印関数に変換することができる.
  • const currying = func => a => b => func(a,b);