2010-02-22 3 views
12

Was ich wollte, war eine Möglichkeit, Argumente in Funktionen zu übergeben, die einer Ruby-Hash-Karte ähnelten. Obwohl vielleicht ist dies für Erlang eine schlechte Passform, ich bin noch nicht sicher,Was ist das Wichtigste in Erlang zu Hashes?

In Ruby ich oft verwendet Hashes wie:

{ "a" => 100, "b" => 200}

: Was ist in Erlang am nächsten?

Update: ich da dies gefunden habe:

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

Ist Aufzeichnungen einen guten Kandidaten mit?

+3

Sie sollten einen speziellen Tag für Ihre eigenen Fragen erstellen ... – Zed

+0

Guter Rat, danke Zed – Zubair

+2

Durch das Lesen Ihrer Antworten auf die Antworten unten kann ich sicher sagen, dass Sie einen schrecklichen Fehler machen. Du willst ein Ruby-Funktions-Call-Idiom in Erlang verwenden, weil du mit Erlang-Idiomen nicht vertraut bist ... mach das nicht. Lerne die Sprache, die du benutzt. – Dustin

Antwort

14

proplist s, dict s oder gb_tree s.

+1

scheinen Proplists die netteste ähnliche Syntax zu haben. Danke Zed – Zubair

+1

Proplists können in der Syntax ähnlich sein, aber es ist kein Hash. Lineare Nachschlagezeit, aber konstante Einfügung. Edit: Ich sollte die Frage lesen, Sie wollten wirklich die Syntax. =) – psyeugenic

+0

lineare Suche kann viel schneller sein für Hashes mit nur einer Handvoll von Elementen ... – Zed

3

Sie sind hier: dict - Key-Value Dictionary

Post Scriptum: Ich habe dies innerhalb von 30 s gegoogelt so denke ich, Sie könnten diese Frage stellt vermeiden ;-)

Edit: Um meine Antwort zu verteidigen:

from_list (List) -> Dict

Arten:
List = [{Schlüssel, Wert}]
Dict = dictionary()

Diese Funktion konvertiert die Liste der Schlüssel-/Werteliste in ein Wörterbuch.

Dies ist ein Zitat von meinem Link. So können Sie Hashes genauso erstellen, wie wenn Sie Proplists verwenden.

+0

Ich habe es googeln und es gibt nichts entfernt syntaktisch ähnlich wie in der Webseite, die Sie beschrieben haben : {"a" => 100, "b" => 200} – Zubair

+3

Ich dachte, Sie fragen nach funktionalen Ähnlichkeit, nicht syntaktisch, weil ich lächerlich ist Suche nach ähnlicher Syntax, nur um Code zu schreiben, der aussieht wie in anderen Sprachen. –

+0

Ja, wahrscheinlich hast du recht. Es ist nur so oft, wenn ich auf Erlang-Funktionsaufrufe schaue, es ist schwer zu wissen, wofür genau jeder Parameter ist, und Ruby-Hashes mochte ich immer.Aber ja, ich werde wahrscheinlich die falsche Frage stellen. Dank – Zubair

6

ETS- und DETS-Tabellen sind echte Hashtabellen im Gegensatz zu einem Diktat. DETS sind für den Plattenspeicher gedacht, während ETS im Speicher sind. Sie sind die Bausteine ​​für die Mnesia-Datenbank.

+0

Aber kann ETS oder DETS verwendet werden, um Parameter an eine Funktion zu übergeben? – Zubair

+0

Sicher - aber ich bin mir nicht sicher, was du meinst. Beachten Sie jedoch, dass es sich nicht um unveränderbare Strukturen handelt. Sie geben nach einem 'Put' keine neue modifizierte Kopie zurück. Sie können also gefährlich sein. Aber wenn Sie sicher die Geschwindigkeit eines Hashes und große Größe benötigen, sind sie der richtige Weg. –

9

Erlang R17A enthält Kartendatenstruktur.

+0

R17 ist bereits live. So funktioniert Hashmaps in erlang http://joearms.github.io/2014/02/01/big-changes-to-erlang.html – gextra

Verwandte Themen