引数タイプの変数を作成します

スルタン

私はミドルウェア関数にデバッグを呼び出させようとしています。これはいくつかのパラメーターを取り、それらをログに記録して次の関数に渡す必要があります。

const debug = (...args) => {
 console.log(...args)
 return args // will return array, not argument type variable
}

const compose = (...fns) => (...arg) => (
  fns.slice().reverse().reduce(
    (acc, fn) => !acc ? fn(...arg) : fn(acc), null
  )
)

const f = x => x * x

const g = (a, b) => a + b

const makeMagic = compose(
  f,
  g,
  debug
)

makeMagic(1, 2)

コンポジションからデバッグを削除すると、すべてが期待どおりに機能します。最後に配置するとすぐに壊れます。引数を取るが配列を返すからです。

私はdebugこのように書き直そうとしました

function debug() {
  console.info(arguments)
  return arguments
}

しかし、失敗することはありません。

TJクラウダー

関数には常に単一の結果値しかありません。複数の引数を受け入れ、複数の値を「返す」関数を作成するには、その周りに何らかのコンテナ(配列など)がないと、JavaScriptの機能ではありません(他のほとんどのプログラミング言語も同様です)。

単一の引数debugに対して純粋なパススルーを作成できますが、複数の引数作成することはできません。したがって、たとえば、次のように機能させることができます。

const result = debug(makeMagic(1, 2))

... ログに記録したに)返さresultれる値makeMagicどこにありますが、作成した方法で値をdebug含めることはできませんmakeMagic

持っているdebugあなたにチェーンの途中で(または他の関数)compose、あなたはそれとすべてと規則を使用する必要があると思いますcompose、おそらくそれらをすべて返却アレイを有することで、彼らは複数の値を返す方法については可能な機能。今ファクトtahtに役立ちますまた、あなたのことをcomposeそれは使用しています:関数は、私はバグであると仮定し何を持っている...args、以前の関数が返された任意の時間falsy(値を0""NaNnullundefined、またはfalse)を、私はかなりあなたが行うことを意味していますそれは最初の呼び出しでのみです。

compose結果の配列を返す関数である構成可能な関数を期待するバージョンは次のとおりです。

const debug = (...args) => {
    console.log(...args);
    return args;
};

const compose = (...fns) => (...args) => (
    fns.slice().reverse().reduce(
        (acc, fn) => fn(...(acc || args)),
        null
    )
);

const f = x => [x * x];

const g = (a, b) => [a + b];

const makeMagic = compose(
    f,
    g,
    debug
);

const result = makeMagic(1, 2);
console.log(result);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C99可変個引数関数の引数タイプを取得します

分類Dev

2 つの引数を持つ Decltype はタイプを変更します

分類Dev

名前は同じで引数のタイプが異なる2つのR関数を作成します

分類Dev

同じタイプの引数の可変個引数の数を定義する方法はありますか?

分類Dev

javascriptプロトタイプ変数は参照を作成します

分類Dev

c関数の引数のエラーチェックのタイプを変更しますか?

分類Dev

インスタンスを作成する前に、typeping.NamedTupleの引数を変更します

分類Dev

タイプの変数引数をチェックする

分類Dev

引数付きのカスタムEXEファイルを実行するプロセスを作成します

分類Dev

別の関数の引数として可変数と引数のタイプを持つC ++関数

分類Dev

Typescript関数は、引数の数またはタイプに応じてタイプを返します

分類Dev

呼び出し可能な可変個引数タプルの関数の結果からタプルを作成します

分類Dev

関数の引数としてメタタイプを渡す

分類Dev

同じ可変数のコンストラクター引数を各要素に渡してタプルを作成します

分類Dev

可変個引数のタイプに応じて決定します

分類Dev

プログラムの引数を変更しない関数を作成する方法はありますか?

分類Dev

n番目の可変個引数テンプレート引数が特定のタイプであるかどうかを確認します

分類Dev

Winscpの動的コマンドライン引数を作成するには、SSIS変数をプロセス実行タスクに渡す必要があります

分類Dev

ポインタの値を変数にコピーします。ポインタは引数として渡されますCプログラム

分類Dev

Spring Java Config:ランタイム引数を使用してプロトタイプスコープの@Beanをどのように作成しますか?

分類Dev

Pythonは他の変数のタイプで変数を定義します

分類Dev

タイプ「NSLayoutConstraint」の不変値をinout引数として渡すことはできません

分類Dev

可変個引数マクロで__VA_ARGS__のタイプを確認します

分類Dev

Python引数パーサーは、リストタイプ入力の変数名を定義します

分類Dev

Cstdcallインターフェイスメソッドの変数引数をDelphiに変換します

分類Dev

Swiftの引数として構造体の「タイプ」を渡しますか?

分類Dev

文字列のルールタイプを決定し、引数を解析します

分類Dev

ペアのタプルを可変個引数テンプレートタイプにストリップしたり、可変個引数タイプで何かをインスタンス化する方法はありますか?

分類Dev

変数aと同じタイプの変数bを定義します

Related 関連記事

  1. 1

    C99可変個引数関数の引数タイプを取得します

  2. 2

    2 つの引数を持つ Decltype はタイプを変更します

  3. 3

    名前は同じで引数のタイプが異なる2つのR関数を作成します

  4. 4

    同じタイプの引数の可変個引数の数を定義する方法はありますか?

  5. 5

    javascriptプロトタイプ変数は参照を作成します

  6. 6

    c関数の引数のエラーチェックのタイプを変更しますか?

  7. 7

    インスタンスを作成する前に、typeping.NamedTupleの引数を変更します

  8. 8

    タイプの変数引数をチェックする

  9. 9

    引数付きのカスタムEXEファイルを実行するプロセスを作成します

  10. 10

    別の関数の引数として可変数と引数のタイプを持つC ++関数

  11. 11

    Typescript関数は、引数の数またはタイプに応じてタイプを返します

  12. 12

    呼び出し可能な可変個引数タプルの関数の結果からタプルを作成します

  13. 13

    関数の引数としてメタタイプを渡す

  14. 14

    同じ可変数のコンストラクター引数を各要素に渡してタプルを作成します

  15. 15

    可変個引数のタイプに応じて決定します

  16. 16

    プログラムの引数を変更しない関数を作成する方法はありますか?

  17. 17

    n番目の可変個引数テンプレート引数が特定のタイプであるかどうかを確認します

  18. 18

    Winscpの動的コマンドライン引数を作成するには、SSIS変数をプロセス実行タスクに渡す必要があります

  19. 19

    ポインタの値を変数にコピーします。ポインタは引数として渡されますCプログラム

  20. 20

    Spring Java Config:ランタイム引数を使用してプロトタイプスコープの@Beanをどのように作成しますか?

  21. 21

    Pythonは他の変数のタイプで変数を定義します

  22. 22

    タイプ「NSLayoutConstraint」の不変値をinout引数として渡すことはできません

  23. 23

    可変個引数マクロで__VA_ARGS__のタイプを確認します

  24. 24

    Python引数パーサーは、リストタイプ入力の変数名を定義します

  25. 25

    Cstdcallインターフェイスメソッドの変数引数をDelphiに変換します

  26. 26

    Swiftの引数として構造体の「タイプ」を渡しますか?

  27. 27

    文字列のルールタイプを決定し、引数を解析します

  28. 28

    ペアのタプルを可変個引数テンプレートタイプにストリップしたり、可変個引数タイプで何かをインスタンス化する方法はありますか?

  29. 29

    変数aと同じタイプの変数bを定義します

ホットタグ

アーカイブ