Julia-Tupel

Die Tupel von Julia ähneln Arrays; beide sind geordnete Sammlungen von Elementen, der Unterschied besteht darin, dass Tupelelemente nicht geändert werden können.

Darüber hinaus verwenden Tupel runde Klammern(...)während Arrays eckige Klammern verwenden[...]。

Das Erstellen eines Tupels ist sehr einfach: Fügen Sie einfach Elemente in Klammern hinzu und trennen Sie sie durch Kommas. Viele Funktionen für Arrays können auch mit Tupeln verwendet werden.

Wie im folgenden Beispiel:

Beispiel

julia> tupl=(5,10,15,20,25,30)   # Ein Tupel erstellen
(5, 10, 15, 20, 25, 30)

julia> tupl
(5, 10, 15, 20, 25, 30)

julia> tupl[3:end]          # Gib das Tupel vom dritten bis zum letzten Element aus
(15, 20, 25, 30)

julia> tupl = ((1,2),(3,4))   # Erstelle ein zweidimensionales Tupel
((1, 2), (3, 4))

julia> tupl[1]      # Greife auf ein 2D-Tupel-Element zu und gib das Tupel der ersten Dimension aus
(1, 2)

julia> tupl[1][2]    # Greife auf ein 2D-Tupel-Element zu und gib das zweite Element des Tupels der ersten Dimension aus
2

Die Elemente eines Tupels können nicht geändert werden. Wenn wir versuchen, es zu ändern, wird ein Fehler gemeldet:

Beispiel

julia> tupl2=(1,2,3,4)
(1, 2, 3, 4)

julia> tupl2[2]=0
ERROR: MethodError: no method matching setindex!(::NTuple{4, Int64}, ::Int64, ::Int64)
Stacktrace:
 [1] top-level scope
   @ REPL[8]:1

Benennung von Tupeln

Wir können Tupel benennen, wodurch der Zugriff auf sie bequemer wird.

Im Folgenden werden mehrere verschiedene Möglichkeiten zum Benennen von Tupeln aufgeführt.

1. Getrennte Benennung von Schlüssel und Wert in einem Tupel

Schlüssel und Wert in einem Tupel können getrennt und unabhängig voneinander benannt werden, wie im folgenden Beispiel:

Beispiel

julia> names_shape = (:corner1, :corner2)
(:corner1, :corner2)

julia> values_shape = ((100, 100), (200, 200))
((100, 100), (200, 200))

julia> shape_item2 = NamedTuple{names_shape}(values_shape)
(corner1 = (100, 100), corner2 = (200, 200))

Wir können.einen Punkt verwenden, um auf das Tupel zuzugreifen:

Beispiel

julia> shape_item2.corner1
(100, 100)

julia> shape_item2.corner2
(200, 200)

2. Schlüssel und Wert zusammen in einem Tupel

Schlüssel und Wert können beide in einem Tupel enthalten sein, wie im folgenden Beispiel:

Beispiel

julia> shape_item = (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))

Wir können.einen Punkt verwenden, um auf das Tupel zuzugreifen:

Beispiel

julia> shape_item.corner1
(1, 1)

julia> shape_item.corner2
(-1, -1)

julia> shape_item.center
(0, 0)

julia> (shape_item.center,shape_item.corner2)
((0, 0), (-1, -1))

Wir können auch auf alle Werte genauso zugreifen wie bei einem regulären Tupel, wie unten gezeigt:

Beispiel

julia> c1, c2, center = shape_item
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))

julia> c1
(1, 1)

3. Zusammenführen zweier benannter Tupel

Wir könnenmerge()als eine Funktion zum Zusammenführen zweier benannter Tupel verwenden, wie im folgenden Beispiel:

Beispiel

julia> colors_shape = (top = "red", bottom = "green")
(top = "red", bottom = "green")

julia> shape_item = (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))

julia> merge(shape_item, colors_shape)
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0), top = "red", bottom = "green")

Tupel als Funktionsargumente

Im folgenden Beispiel erstellen wir einetestFunc-Funktion und übergeben das Tupeloptionsals Argument:

Beispiel: Code der Datei test.jl

# Eine Funktion erstellen
function testFunc(x, y, z; a=10, b=20, c=30)
    println("x = $x, y = $y, z = $z; a = $a, b = $b, c = $c")
 end

# Ein Tupel erstellen
 options = (b = 200, c = 300)
 
# Führe die Funktion aus, Tupel als Argument übergeben
 testFunc(1, 2, 3; options...)

Verwende denjuliaBefehl, um die obige Datei auszuführen, die Ausgabe ist:

$ julia test.jl
x = 1, y = 2, z = 3; a = 10, b = 200, c = 300

Wenn die angegebenen Argumente nach dem Tupel platziert werden, überschreiben sie die vorhandenen Argumente im Tupel:

Beispiel

# Eine Funktion erstellen
function testFunc(x, y, z; a=10, b=20, c=30)
    println("x = $x, y = $y, z = $z; a = $a, b = $b, c = $c")
 end

# Ein Tupel erstellen
 options = (b = 200, c = 300)

# Führe die Funktion aus, Tupel als Argument übergeben; angegebene Argumente vor dem Tupel überschreiben nicht
testFunc(1, 2, 3; b = 1000_000, options...)

# Führe die Funktion aus, Tupel als Argument übergeben; angegebene Argumente nach dem Tupel überschreiben
testFunc(1, 2, 3; options..., b= 1000_000)

Verwende denjuliaBefehl, um die obige Datei auszuführen, die Ausgabe ist:

$ julia test.jl
x = 1, y = 2, z = 3; a = 10, b = 200, c = 300
x = 1, y = 2, z = 3; a = 10, b = 1000000, c = 300
Andere Erweiterungen