4
A
回答
8
float-only記錄或數組中的浮點字段被解除存儲,而沒有這種優化適用於元組。如果您要存儲大量浮點數並僅存儲浮點數,那麼使用記錄非常重要 - 您可以通過拆分混合浮點數/其他數據結構以獲得內部僅浮點數記錄來獲得。
其他的差異是在類型級別,並已由安德烈亞斯描述 - 記錄是生成的,而元組預先存在並具有結構語義。如果你想要多態訪問器的結構記錄,你可以使用對象類型。
12
Modulo語法它們幾乎是相同的。主要的語義差異是元組是結構類型,而記錄是名義類型。這意味着該記錄可以是遞歸的,而元組無法(至少不無-rectypes選項):
type t = {a : int, b : unit -> t} (* fine *)
type u = int * (unit -> u) (* error *)
此外,記錄可以具有可變領域,元組不能。
FWIW,在OCaml的姐妹語言SML中,元組是記錄。也就是說,在SML中(a,b,c)只是{1 = a,2 = b,3 = c}的語法糖,記錄也是結構類型。
相關問題
- 1. 行,記錄和元組有什麼區別?
- 2. 追蹤和記錄有什麼區別?
- 3. 元組和compress_pair有什麼區別?
- 4. OCaml中的include,require和open有什麼區別?
- 5. avro中的地圖和記錄有什麼區別?
- 6. mule esb中不同級別的記錄有什麼區別?
- 7. 在ActiveRecord中,marked_for_detroy和destroy關聯記錄有什麼區別?
- 8. Django中urlpatterns的url()和元組有什麼區別?
- 9. OCaml/Node.JS上的Lwt.async和Lwt_main.run之間有什麼區別?
- 10. Rails活動記錄的select和group有什麼區別?
- 11. 配置單元中的分區和分區有什麼區別?
- 12. 有什麼區別`和$(Bash中有什麼區別?
- 13. 樹和目錄有什麼區別?
- 14. IEnumerable和數組有什麼區別?
- 15. int和char數組有什麼區別?
- 16. CPU和芯片組有什麼區別?
- 17. 組件和指令有什麼區別?
- 18. malloc和數組有什麼區別
- 19. 數組和ArrayList有什麼區別?
- 20. 字典和數組有什麼區別?
- 21. 組件和涼亭有什麼區別?
- 22. 數組和散列有什麼區別?
- 23. MongoDB:文檔,記錄和屬性之間有什麼區別?
- 24. OCaml中的這兩個類型定義有什麼區別
- 25. HTML元素和HTML標記有什麼區別?
- 26. 數組元素的id和index有什麼區別?
- 27. 包含標記和embed標記在expressionengine中有什麼區別?
- 28. OCaml中這三個fscanf調用有什麼區別?
- 29. 反轉元組和反轉列表有什麼區別?
- 30. Smalltalk中的數組和字面數組有什麼區別?
是什麼導致了這種問題?他們適合不同的應用程序。在這個階段我不會擔心表演。實現不是「相同的」,因爲...他們是不同的東西。 – Ashe
如果他們是不同的東西,那麼你有沒有使用元組可以完成的事情的例子,但是沒有記錄(反過來)?我問這個問題是因爲你說的兩件事情看起來和我很相似。 – Thomash
定義「可以完成」。原諒惠顧的聲調,但任何事情都可以用圖靈機完成。記錄只是提供了更容易的訪問,也就是說,您不需要爲了獲得一個元素而解構整個事物。它們更好的文檔記錄,以及更容易的訪問,允許使用'mutable'關鍵字和'<-'語法更容易地更新refs。 – Ashe