これはむしろ一般的な目的の質問であり、いずれの言語にも固有のものではありません。私は、別の関数への引数として関数を渡すことの背後にある点をかなり理解していません。私は、関数、例えば、foo1()
が別の関数foo2()
によって返された結果を使用する必要がある場合、foo2()
によって返された値がそのままfoo1()
に渡されないことを理解します。または別のシナリオでは、なぜがfoo1()
の中で呼び出され、その結果がそこに使用されないのですか? foo2()
が引数として渡されてfoo1()
になったときに、何が起こるのでしょうか? foo1()
より前にfoo2()
が実行されていますか?関数を他の関数の引数として渡すことの背後にある点は何ですか?
1
A
答えて
2
一般的に言えば、あなたはfoo2
の複数の評価が必要になる場合に機能foo1
に機能foo2
を渡す - あなたはおそらくパラメータがfoo2
の各呼び出しのために使用されるかを事前に知っていないので、あなたがcouldn可能であれば、事前に自分で電話をしてください。
私は、リスト上のsort()
機能/方法が最も具体的な例であると思います。人々のリストを考えてみましょう。アルファベット順にアルファベット順に並べ替えるか、年齢別に、または指定された地点からの地理的距離によって、または他の多くの可能な注文を並べ替えることが合理的です。そのようなすべての注文をsort()
に組み込まれたオプションとして含めることはほとんど不可能です。言語によって行われる通常のアプローチは、呼び出し元がパラメータとして関数を提供し、リストの項目間の順序を定義できるようにすることです。
0
は多くの理由があります:
依存性の注入:あなたは本番でデータベース呼び出しを使用する方法を渡し、あなたは異なるパラメータでそれを使用する場合、あなたには、いくつかのモックユニットテストでそれを置き換えることができます。
Map、filter、reduce:パラメーターのリストに同じメソッドを適用し、マップしたり、フィルターをかけたり、減らしたりすることができます。
0
通常、コールバックを提供したり、インターフェイスを実装から分離したりするために使用します。次を検索:
-
1.依存性の注入、 2.コールバック、 3.無名関数(別名ラムダ)、 4. PIMPL など
はそれがこの本を見てみましょう https://www.amazon.co.uk/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X
関連する問題
- 1. Python - 引数を他の関数の引数として渡す関数
- 2. プログラミングワークフロー:どちらですか?引数を関数から関数に渡すか、出力を引数として他の関数に渡すか?
- 3. 他の関数内の関数に引数を渡す
- 4. 関数内の引数としてサブ関数名を渡す
- 5. C++:テンプレート引数控除その他のテンプレート関数の引数としてテンプレート関数を渡す
- 6. 関数の引数としてポインタを渡す意味は何ですか?
- 7. 最終関数の引数として他の関数にある関数から値を取る方法
- 8. 他の関数の引数としての関数JQuery
- 9. スカラーで関数の引数としてクラスを渡すには?
- 10. デバイス関数へのポインタをカーネル関数の引数として渡すには?
- 11. javaの関数引数として関数名を渡すことはできますか?
- 12. 関数をカルト関数の引数として渡すときに、この引数を抽出する方法はありますか?
- 13. C++で関数を引数として渡すときのエラー
- 14. 関数名を引数として渡すことはできますか?
- 15. requestAnimationFrame引数を関数に渡すと、何とか渡されますか?
- 16. テンプレート引数へのポインタを関数の引数として渡しますか?
- 17. 引数を渡すことによる関数のトラップ?
- 18. 関数をパラメータとして渡すことの利点
- 19. 引数を関数の属性として渡しますか?
- 20. スレッドに関数と引数を渡す
- 21. Pythonで引数としてメンバ関数を渡すには?
- 22. ある関数から別の関数に最初の関数の引数であるデータを渡す方法
- 23. Pythonの別の関数への引数として関数のセットを渡す
- 24. 関数の引数にあるPHPのフラグは何ですか?
- 25. 引数と関数と関数ポインタの相違点
- 26. データフレームを渡して引数として関数pandasを渡す
- 27. 関数の引数として匿名関数に値を渡す
- 28. スーパークラスを持つ関数をパラメータとして持つ関数への引数としてSubclassを渡す関数
- 29. 座標を関数の引数として渡す方法は?
- 30. Haskell - 任意の関数と引数リストを別の関数の引数として渡す
これを見て、役に立つかもしれません:https://softwareengineering.stackexchange.com/questions/253868/passing-functions-into-other-functions-as-パラメータ - 悪い練習 –
基本的にrなしそのすべてのリンクを強調すると、高次関数には必要です。 [地図](https://en.wikipedia.org/wiki/Map_(higher-order_function))と[reduce](https://en.wikipedia.org/wiki/Fold_(higher-order_function))は共通の例です。 –
@ Don'tPanicそのリンクが多くを吸収する間に、私はまだポイントをまだよく理解しているとは思わない。 :/ – alannaC