私はこの定義を私の譲渡で得ました。そして、私はそれがどのように動作し、何をするのかを完全に理解することはできません。Typescript - これは構成構文ですか?
これは構成構文ですか?
f
は、特定の定義はありません。 主に、私はx
とは分かりません。
const invokeN1 = (f, n) =>
n === 0 ? (x) => x : (x) => f(invokeN1(f,n-1)(x))
私はこの定義を私の譲渡で得ました。そして、私はそれがどのように動作し、何をするのかを完全に理解することはできません。Typescript - これは構成構文ですか?
これは構成構文ですか?
f
は、特定の定義はありません。 主に、私はx
とは分かりません。
const invokeN1 = (f, n) =>
n === 0 ? (x) => x : (x) => f(invokeN1(f,n-1)(x))
あなたがここで与えているのは、呼び出しパターン/コールバックです。 invokeN1(func,n-1)
は1つの変数の関数を返します。
:
(f,n)=>whatever
これはinvokeN1 2つの変数、「何でも」によって決定された結果を受け入れる関数であることを意味します。その時に見てみましょう:
n===0?
はinvokeN1
の2番目のパラメータを確認してください - それは今すぐ0と同じ型と値を持っている必要があり、それが0復帰の場合:
(x) => x
これは返されるものです - 別の呼び出しパターン! これは同じ引数を返す1つの引数の関数を表します。ここでは(x)
が関数シグニチャであり、x
が返されることに注意してください。
n
が0でない場合はどうなりますか?
(x) => f(invokeN1(f,n-1)(x))
別の呼び出しパターン - 再び、単一の引数を受け取る関数は、x
として表され、右の事あなたが正しい、それがどうなるのか、再帰的に伝えることができるはずを返しますか?