Elixier - Bibliotheken

Elixir bietet eine hervorragende Interoperabilität mit Erlang-Bibliotheken. Lassen Sie uns kurz einige Bibliotheken besprechen.

Das Binärmodul

Das integrierte Elixir String-Modul verarbeitet Binärdateien, die UTF-8-codiert sind. Das Binärmodul ist nützlich, wenn Sie mit Binärdaten arbeiten, die nicht unbedingt UTF-8-codiert sind. Betrachten wir ein Beispiel, um das Binärmodul besser zu verstehen.

# UTF-8
IO.puts(String.to_char_list("Ø"))

# binary
IO.puts(:binary.bin_to_list "Ø")

Wenn das obige Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

[216]
[195, 152]

Das obige Beispiel zeigt den Unterschied; Das String-Modul gibt UTF-8-Codepunkte zurück, während: binary Binärdatenbytes behandelt.

Das Kryptomodul

Das Kryptomodul enthält Hashing-Funktionen, digitale Signaturen, Verschlüsselung und mehr. Dieses Modul ist nicht Teil der Erlang-Standardbibliothek, sondern in der Erlang-Distribution enthalten. Dies bedeutet, dass Sie bei jeder Verwendung Folgendes auflisten müssen: Krypto in der Anwendungsliste Ihres Projekts. Sehen wir uns ein Beispiel mit dem Kryptomodul an -

IO.puts(Base.encode16(:crypto.hash(:sha256, "Elixir")))

Wenn das obige Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

3315715A7A3AD57428298676C5AE465DADA38D951BDFAC9348A8A31E9C7401CB

Das Digraph-Modul

Das Digraph-Modul enthält Funktionen für den Umgang mit gerichteten Graphen, die aus Eckpunkten und Kanten bestehen. Nach dem Erstellen des Diagramms helfen die darin enthaltenen Algorithmen dabei, beispielsweise den kürzesten Pfad zwischen zwei Scheitelpunkten oder Schleifen im Diagramm zu finden. Beachten Sie, dass die Funktionenin :digraph Ändern Sie die Diagrammstruktur indirekt als Nebeneffekt, während Sie die hinzugefügten Scheitelpunkte oder Kanten zurückgeben.

digraph = :digraph.new()
coords = [{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}]
[v0, v1, v2] = (for c <- coords, do: :digraph.add_vertex(digraph, c))
:digraph.add_edge(digraph, v0, v1)
:digraph.add_edge(digraph, v1, v2)
for point <- :digraph.get_short_path(digraph, v0, v2) do 
   {x, y} = point
   IO.puts("#{x}, #{y}")
end

Wenn das obige Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

0.0, 0.0
1.0, 0.0
1.0, 1.0

Das Mathematikmodul

Das Mathematikmodul enthält allgemeine mathematische Operationen, die Trigonometrie-, Exponential- und Logarithmusfunktionen abdecken. Betrachten wir das folgende Beispiel, um zu verstehen, wie das Mathematikmodul funktioniert:

# Value of pi
IO.puts(:math.pi())

# Logarithm
IO.puts(:math.log(7.694785265142018e23))

# Exponentiation
IO.puts(:math.exp(55.0))

#...

Wenn das obige Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

3.141592653589793
55.0
7.694785265142018e23

Das Warteschlangenmodul

Die Warteschlange ist eine Datenstruktur, die (doppelendige) FIFO-Warteschlangen (First-In First-Out) effizient implementiert. Das folgende Beispiel zeigt, wie ein Warteschlangenmodul funktioniert -

q = :queue.new
q = :queue.in("A", q)
q = :queue.in("B", q)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)

Wenn das obige Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

A
B