私は現在、個人的な時間にプログラミング問題に取り組んでいます。このように呼び出される。最後の関数呼び出しで値を返す任意の回数呼び出すことができるカレット化されたjavascript関数を書く
add(1) // 1
add(1)(2) // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
最後の呼び出しで値を返す方法はわかりません。例えば
は、add(1)(2)
が機能するために、次にadd(1)
関数を返すことがあるが、自身が呼び出されたときに指示add(1)
に係る1
を返します。
私はこれを克服することができると仮定していますが、何度も連続してadd
関数が呼び出されていますが、それを達成する方法は考えられません。誰かが正しい方向に私を指すことができるヒントを持っていますか?
私は関数カリングでこれら2つの記事(1、2)を読んだことがありますが、それらを理解していますが、可変数の引数を扱うときにカールする方法がわかりません。
だから、何をしようとしたのですか?ネット上でカレーする例がたくさんあります。あなたは関数を返す... – epascarello
@epascarello申し訳ありませんが私はそれを明確にしていない場合。私はこのhttp://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.htmlとこのhttp://blog.carbonfive.com/2015/01/14/gettin-freaky-functional -wcurried-javascript /私の試みについては、彼らは非常に離れているので、私はそれらを掲示する際に価値を見ません。また、私はカレーリング自体に問題はありません。私は最終的に解決する前に、関数の呼び出しの可変数を取るに問題があります。それにどう対応するのか分かりません。 – m0meni
Btwでは、variadic関数を使用する代わりに、reduce演算子関数とbinary演算子関数、またはvariadic引数が配列として渡される "semi-variadic"関数で対応する問題を解決する必要があります。これは、機能的なスタイルにはるかによく合います。バリアント関数は、解決するよりも多くの問題を作り出し、避けるべきです。 – rand