2010-02-22 39 views
12

我想要的是將參數傳遞到類似於紅寶石哈希映射的函數中。雖然也許這是一個壞適合二郎,我還沒有確定Erlang中最接近哈希的是什麼?

在Ruby中,我經常使用的哈希值,如:

{ 「A」=> 100, 「B」=> 200}

:Erlang最接近什麼?

更新: 因爲我已經發現了這一點:

http://20bits.com/articles/erlang-an-introduction-to-records/

是使用記錄一個很好的候選人?

+3

你應該爲自己的問題創建一個特定的標籤... – Zed 2010-02-22 15:14:55

+0

好的建議,謝謝Zed – Zubair 2010-02-22 15:45:37

+2

從閱讀你的回答到下面的答案,我可以放心地說你犯了一個可怕的錯誤。你想在erlang中使用ruby函數調用習慣用法,因爲你不熟悉erlang成語......不這樣做。瞭解您正在使用的語言。 – Dustin 2010-02-22 20:28:11

回答

14

proplist s,dict s或gb_tree s。

+1

proplists似乎有最好的相似的語法。謝謝Zed – Zubair 2010-02-22 15:41:45

+1

proplists語法可能相似,但它不是一個散列。線性查找時間,但不斷插入。 編輯:我應該讀這個問題,你真的想要的語法。 =) – psyeugenic 2010-02-22 15:48:11

+0

只有極少數元素,線性查找可以更快地進行散列... – Zed 2010-02-22 16:01:05

3

你在這裏:dict - Key-Value Dictionary

郵政scriptum:我已經30多歲內一派這讓我覺得你可以避開這個問問題;-)

編輯:保衛我的回答:

from_list(列表) - >字典

類型:
列表= [{鍵,值}]
Dict = dictionary()

此函數將鍵/值列表List轉換爲字典。

這是從我的鏈接引用。因此,您可以使用與使用proplists時完全相同的方式創建散列。

+0

我做過谷歌它,沒有什麼東西在你描述的網頁語法上遠程相似: {「a」=> 100,「b」=> 200} – Zubair 2010-02-22 15:39:58

+3

我以爲你問的是功能相似性問題,而不是語法問題,因爲我覺得荒謬的是搜索類似的語法,只是爲了編寫代碼就像其他語言一樣。 – 2010-02-22 15:45:21

+0

是的,你可能是對的。通常當我查看erlang函數調用時,很難準確知道每個參數的用途,我總是喜歡Ruby哈希。但是,是的,我可能會問一個錯誤的問題。謝謝 – Zubair 2010-02-22 15:47:49

6

與字典不同,ETS和DETS表是真正的散列表。 DETS用於磁盤存儲,而ETS在內存中。它們是Mnesia數據庫的基石。

+0

但是ETS或DETS是否可以將參數傳遞給函數? – Zubair 2010-02-22 17:30:33

+0

當然 - 但我不確定你的意思。但是請注意,它們不是不可變的結構,它們在'put'之後不會返回新的修改副本。所以他們可能是危險的。但是如果你確實需要散列速度和大尺寸,那麼他們就是要走的路。 – 2010-02-25 22:08:30

9

Erlang R17A將包括地圖數據結構。

+0

R17已經存在。這裏是如何在erlang中使用Hashmaps http://joearms.github.io/2014/02/01/big-changes-to-erlang.html – gextra 2014-10-08 08:18:38

相關問題