作爲函數參數傳遞Erlang記錄有什麼缺點嗎?作爲函數參數傳遞Erlang記錄有什麼缺點嗎?
回答
erlangs標準庫中的一些函數確實在它們的接口中使用了記錄(現在我不記得哪些是記錄 - 但有幾個),但在我的愚見中,主要關閉是,用戶必須包含頭文件,才能使用你的函數。 (我從來沒有這樣做過,除非你使用stdlib中的函數),創建奇怪的相互依賴關係,並且很難從shell中使用(我會的從頭頂上知道如何從shell中加載&使用記錄 - 我通常只是通過手動構造元組來「欺騙」...)
另外,處理記錄與東西有點不同你通常會這樣做,因爲他們的默認鍵是把原子'undefined'作爲值,但是au與你通常用proplists做比較(沒有設置的值不存在) - 這可能會導致對於那些通常沒有很多記錄工作的人來說有些困惑。
因此,總而言之,我通常更喜歡proplist或類似的東西,除非我有充分的理由來使用記錄。儘管如此,我通常使用記錄的內部狀態,例如gen_server或gen_fsm;更新這種方式更容易一些。
沒有缺點,除非調用者函數和被調用的函數是用不同的'版本'編譯的。
啊,當然,因爲它們是編譯時功能。可能不是一個好主意,然後使用客戶端API的記錄? – Zubair 2010-02-22 16:59:56
不,我認爲使用記錄是好的您正在使用.hrl文件的正確版本,它被廣泛用於第三方模塊和應用程序以及一些核心模塊中 – 2010-02-23 12:43:24
我認爲最大的缺點是它不是慣用的。你有沒有看過一個需要你創建一個記錄並將其傳入的API?
爲什麼你想要做一些對於任何erlang程序員來說都感覺陌生的東西?有一個約定已經用於可選的命名參數。沒有好的原因發明另一種方式是毫無意義的。
只要函數的返回值是一個記錄,爲什麼它不能用作輸入另一個? – Zed 2010-02-23 10:07:01
- 1. Erlang:將記錄傳遞給函數?
- 2. 將參數傳遞給AsyncTask構造函數有什麼優點/缺點?
- 3. 作爲參數傳遞的這個函數有什麼問題?
- 4. 將日誌記錄信息作爲參數傳遞給函數
- 5. 將匿名函數作爲參數傳遞給Erlang中的函數?
- 6. 遞歸函數裏面寫函數有什麼缺點嗎?例如
- 7. 什麼作爲參數傳遞給構造函數從超類
- 8. 傳遞指針作爲函數參數的語義是什麼?
- 9. 什麼作爲字符串參數傳遞給構造函數?
- 10. 什麼參數傳遞給EOF()函數
- 11. 傳遞函數作爲參數傳遞給另一個函數
- 12. 傳遞函數數組作爲參數
- 13. 爲什麼沒有記錄jQuery.camelCase()函數?
- 14. 傳遞函數作爲python參數
- 15. 傳遞id作爲函數的參數
- 16. lambda函數作爲參數傳遞
- 17. 傳遞函數作爲參數用Clojure
- 18. 將java函數作爲參數傳遞
- 19. PL/SQL傳遞函數作爲參數
- 20. 傳遞函數作爲參數在HAXE
- 21. Javascript:傳遞函數作爲參數
- 22. 傳遞函數作爲參數
- 23. GLib HashTable傳遞函數作爲參數
- 24. 將函數作爲參數傳遞
- 25. 函數作爲參數傳遞
- 26. 傳遞函數作爲參數
- 27. 作爲參數傳遞一個函數?
- 28. 傳遞$作爲函數參數(jQuery的)
- 29. 如何傳遞函數作爲參數?
- 30. SystemVerilog傳遞函數作爲參數
您能否將我發送給您找到的關於@gleber的鏈接,因爲我無法找到它? – Zubair 2010-02-23 12:14:55
在第4位顯示的http://www.erlang.org/doc/reference_manual/records.html中輸入「erlang records」。該頁面包含有關內部表示的信息,以及在記錄使用的任何地方需要記錄的定義。這應該足以推導出答案 – gleber 2010-02-23 13:09:06
嗨@gleber,再次:)你的意見實際上使stackoverflow值得一遊,因爲你對電腦有熱情,我喜歡這個!無論如何,你能否解釋一下你如何從這一頁中推斷出答案,因爲現在的答案都不一樣?這對我都很有用。我認爲@Dustin的答案也有其優點 – Zubair 2010-02-23 13:19:54