這是一個相當普遍的問題,並不特定於任何一種語言。我不太明白將函數作爲參數傳遞給另一個函數的意思。我知道如果一個函數,例如foo1()
需要使用另一個函數foo2()
返回的某個結果,爲什麼foo2()
返回/更新的值不能按原樣傳遞給foo1()
?或者在另一種情況下,爲什麼foo2()
在foo1()
內被調用,其結果在其中被使用? 當foo2()
作爲參數傳遞給foo1()
時,發生什麼情況? foo2()
是否在foo1()
之前執行?將函數作爲參數傳遞給其他函數的背後是什麼?
1
A
回答
2
一般來說,你傳遞一個函數foo2
在案件的函數foo1
其中foo2
多種評估是必要的 - 你或許事先不知道什麼參數將被用於foo2
每次調用,所以安:我不可能提前自己打電話。
我認爲列表上的一個sort()
函數/方法可能是最好的具體示例。考慮一下人員列表 - 您可能會合理地按名稱按字母順序排列,或按年齡數字排序,或與給定點的地理距離或許多其他可能的排序。將每個這樣的排序作爲內置選項包括到sort()
中都是不實際的:語言採用的通常方法是允許調用者提供函數作爲參數,該參數定義列表項目之間的排序。
0
原因是多方面的:
依賴注入:如果你通過在生產中會使用一個數據庫調用的方法,以及你使用不同的參數使用它,你可以做一些模擬時,單元測試替代它。
映射,過濾器,減少:您可以將相同的方法應用於參數列表,將其映射,過濾或減少參數。
0
通常提供回調,或將接口與實現分開。請看下列內容:
-
1.依賴注入, 2.回調, 3.匿名函數(又名lambda表達式), 4. PIMPL 等
這本書看看它在哪裏廣泛用於開發TDD與C: https://www.amazon.co.uk/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X
相關問題
- 1. JavaScript函數作爲參數傳遞給其他函數
- 2. 傳遞函數作爲參數傳遞給其他功能
- 3. Python - 將參數作爲參數傳遞給其他函數中的參數
- 4. 如何將Django過濾器參數作爲參數傳遞給其他函數
- 5. 將函數數組作爲參數傳遞給函數
- 6. 什麼參數傳遞給EOF()函數
- 7. 將函數作爲參數傳遞給COM對象函數
- 8. javascript - 將回調函數作爲參數傳遞給函數
- 9. 將值作爲函數參數傳遞給匿名函數
- 10. jquery將$(this)傳遞給其他函數
- 11. 將值傳遞給其他函數MVC
- 12. 作爲參數傳遞給函數Javascript
- 13. 將參數傳遞給函數,該參數必須作爲參數傳遞給python中的另一個函數
- 14. 傳遞函數的參數作爲參數傳遞給另一個函數
- 15. 將指針作爲參數傳遞給函數的正確方法是什麼?
- 16. 什麼作爲參數傳遞給構造函數從超類
- 17. 如何將其他參數傳遞給謂詞函數?
- 18. 當函數作爲參數傳遞時,參數如何傳遞給該函數?
- 19. 將函數作爲另一個函數的參數傳遞給嵌套函數
- 20. 將仿函數的實例傳遞給其他仿函數
- 21. 將變量傳遞給其他函數的Django函數
- 22. 將參數作爲參數傳遞給函數?
- 23. 是否有可能將函數作爲參數傳遞給c?
- 24. 在C++中將函數參數作爲函數參數傳遞
- 25. 傳遞指針作爲函數參數的語義是什麼?
- 26. 爲什麼要將接口作爲參數傳遞給android中的函數?
- 27. 將va_list作爲函數參數傳遞
- 28. 將observableArray作爲函數參數傳遞
- 29. 將數組傳遞給函數參數
- 30. 無法將數組傳遞給函數。爲什麼不工作?
看看這個,它可能是有用的:https://softwareengineering.stackexchange.com/questions/253868/passing-functions-into-other-functions-as-參數不良練習 –
基本上沒有r重申所有這些聯繫,這是高階功能所必需的。 [map](https://en.wikipedia.org/wiki/Map_(higher-order_function))和[reduce](https://en.wikipedia.org/wiki/Fold_(higher-order_function))是常見的例子。 –
@ Don'tPanic雖然該鏈接提供了很多吸收,我不認爲我還是很瞭解這一點。 :/ – alannaC