Jetzt klärt sich die Bedeutung des Schlüsselwortes export in der Moduldatei: Nur die exportierte Funktion add_sugar() ist sichtbar, der Aufruf von add_salt() liefert eine Fehlermeldung.
Namensräume anzeigen
Mit varinfo() bringt Julia im interaktiven Modus eine höchst nützliche Funktion mit. Sie zeigt die im Namensraum eines Moduls bekannten Bezeichner an (Listing 7). Ohne Argument gibt varinfo() den Namensraum von Main an. Das erste Beispiel zeigt die Ausgabe in einer frischen Julia-Sitzung. Nach dem Einbinden des Adder-Moduls per include() erscheint auch dieses in der Liste. Der Aufruf varinfo(Adder) liefert die exportierten Bezeichner. Wenn Sie ein Ihnen unbekanntes Modul unter die Lupe nehmen wollen, gibt varinfo() eine erste Orientierung.
Listing 7
> varinfo() name size summary ---------------- ----------- ------- Base Module Core Module InteractiveUtils 130.423 KiB Module Main Module > include("adder.jl"); > varinfo() name size summary ---------------- ----------- ------- Adder 2.767 KiB Module Base Module [...] > varinfo(Adder) name size summary --------- --------- ---------------------------- Adder 2.337 KiB Module add_sugar 0 bytes typeof(Main.Adder.add_sugar)
Die Standardbibliothek
Julias Standardbibliothek umfasst rund 30 Module, die Sie im Bedarfsfall per using laden. Listing 8 zeigt die Anwendung des Moduls Dates aus der Standardbibliothek. Probieren Sie auch den Aufruf varinfo(Dates) aus, dessen Listing wir aus Platzgründen weglassen.
Listing 8
> using Dates > t1 = now() 2020-04-28T12:07:19.993 > t2 = now() 2020-04-28T12:07:25.01 > typeof(t1) DateTime > delta = t2 - t1 5017 milliseconds > typeof(delta) Millisecond
Mit dem Paketmanager-Modul Pkg fügen Sie der Julia-Installation weitere Module hinzu. Es arbeitet ähnlich wie Apt unter Linux oder Pip unter Python. Eine Übersicht und Dokumentationen aller auf diese Weise verfügbaren Erweiterungen finden Sie online [4]. Hier wird schon auf den ersten Blick die naturwissenschaftliche Ausrichtung der Julia-Community deutlich.
Listing 9 demonstriert, wie Sie das Primzahl-Modul Primes installieren und anwenden. Das erstmalige Einbinden des Moduls per using erfordert Geduld, da Julia es nach dem Herunterladen vorkompiliert. Danach gibt primes(21) die 21. Primzahl aus, factor() leistet eine Primfaktorzerlegung und liefert ein Objekt vom Typ Factorization zurück. Möchten Sie die Primfaktoren stattdessen in einem Array speichern, schreiben Sie factor(Array, 1729).
Listing 9
> using Pkg > Pkg.add("Primes") Updating registry at `~/.julia/registries/General` [...] > using Primes [ Info: Precompiling Primes ...] > prime(21) 73 > factors = factor(1729) 7 * 13 * 19 > typeof(factors) Primes.Factorization{Int32} > factor(Array, 1729) 3-element Array{Int32,1}: 7 13 19
Grafische Ausgaben mit PyPlot
Das Package PyPlot bietet eine Schnittstelle zum bewährten Python-Modul matplotlib und zeichnet für grafische Ausgaben zuständig (Listing 10). Das Vorkompilieren erfordert auch auf dem RasPi 4 ein wenig Geduld: Der erstmalige Aufruf von using PyPlot in einer Julia-Sitzung benötigt etwa 20 Sekunden. Das eigentliche Rendern geht dann aber recht flott.
Listing 10
> using Pkg > Pkg.add("PyPlot")
Die Ausgabe von Listing 11 zeichnet eine Sinuskurve. Das Array x speichert die horizontalen Koordinaten. Das Argument von collect() beschreibt hierfür ein UnitRange-Objekt, das mit einer Schrittweite von 0,01 von -2 Pi bis +2 Pi läuft. Die Methode collect() überführt diesen Wertebereich in ein Array.
Listing 11
using PyPlot
x = collect(-2*pi:0.01:2*pi)
y = sin.(x)
plot(x, y, lw=5)
title("Sinus")
xlabel("x")
ylabel("y = sin(x)")
Das Array y speichert die vertikalen Koordinaten, die der Punkt-Operator aus der Sinusfunktion und den x-Koordinaten gewinnt. Die Funktion plot() erzeugt dann die grafische Darstellung. Das Schlüsselwortargument lw definiert die Strichbreite der Kurve, title() setzt eine Überschrift. Für die Achsenbeschriftung dienen xlabel() und ylabel() (Abbildung 1).





