Julias Besonderheit ist die Mehrfachverteilung (Multiple Dispatch): Eine Funktion darf mehrere Methoden haben, und Julia wählt anhand der Typen aller Argumente die passende. Typen gibst du mit :: an, etwa f(x::Int) oder f(x::String).
Eigene Typen definierst du mit struct. Felder sind standardmäßig unveränderlich; mit mutable struct kannst du sie ändern. Das ist das Herzstück, mit dem Pakete in Julia so gut zusammenspielen.
beschreibe(x::Int) = "Ganzzahl $x"
beschreibe(x::String) = "Text '$x'"
beschreibe(x::Float64) = "Kommazahl $x"
println(beschreibe(3))
println(beschreibe("Hi"))
struct Punkt
x::Float64
y::Float64
end
abstand(p::Punkt) = sqrt(p.x^2 + p.y^2)
println(abstand(Punkt(3.0, 4.0))) # 5.0Merke
- Eine Funktion kann mehrere Methoden für verschiedene Typen haben
x::Intgibt einen Typ anstructdefiniert eigene Typen
Aufgabe
Definiere einen Typ Rechteck und eine Funktion, die die Fläche berechnet.