Tuples Julia
Les tuples de Julia sont similaires aux tableaux ; tous deux sont des collections ordonnées d'éléments, la différence étant que les éléments d'un tuple ne peuvent pas être modifiés.
De plus, les tuples utilisent des parenthèses(...)tandis que les tableaux utilisent des crochets[...]。
Créer un tuple est très simple : il suffit d'ajouter des éléments entre parenthèses et de les séparer par des virgules. De nombreuses fonctions pour les tableaux peuvent également être utilisées avec les tuples.
Comme dans l'exemple ci-dessous :
Exemple
(5, 10, 15, 20, 25, 30)
julia> tupl
(5, 10, 15, 20, 25, 30)
julia> tupl[3:end] # Afficher le tuple du troisième au dernier élément
(15, 20, 25, 30)
julia> tupl = ((1,2),(3,4)) # Créer un tuple à deux dimensions
((1, 2), (3, 4))
julia> tupl[1] # Accéder à un élément d’un tuple 2D, en affichant le tuple de la première dimension
(1, 2)
julia> tupl[1][2] # Accéder à un élément d’un tuple 2D, en affichant le deuxième élément du tuple de la première dimension
2
Les éléments d’un tuple ne peuvent pas être modifiés. Si l’on tente de le modifier, une erreur sera signalée :
Exemple
(1, 2, 3, 4)
julia> tupl2[2]=0
ERREUR : MethodError : aucune méthode correspondante setindex!(::NTuple{4, Int64}, ::Int64, ::Int64)
Trace de pile :
[1] portée de premier niveau
@ REPL[8]:1
Nommage des tuples
Nous pouvons nommer les tuples, ce qui rend leur accès plus pratique.
Ce qui suit présente plusieurs façons différentes de nommer les tuples.
1. Nommer séparément la clé et la valeur dans un tuple
La clé et la valeur dans un tuple peuvent être nommées séparément et indépendamment, comme dans l'exemple ci-dessous :
Exemple
(: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))
Nous pouvons utiliser.un point pour accéder au tuple :
Exemple
(100, 100)
julia> shape_item2.corner2
(200, 200)
2. Clé et valeur ensemble dans un seul tuple
La clé et la valeur peuvent toutes les deux être dans un seul tuple, comme dans l'exemple ci-dessous :
Exemple
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))
Nous pouvons utiliser.un point pour accéder au tuple :
Exemple
(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))
Nous pouvons également accéder à toutes les valeurs exactement comme avec un tuple classique, comme indiqué ci-dessous :
Exemple
(corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0))
julia> c1
(1, 1)
3. Fusionner deux tuples nommés
Nous pouvons utiliser la fonctionmerge()pour fusionner deux tuples nommés, comme dans l'exemple ci-dessous :
Exemple
(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")
Tuples comme arguments de fonction
Dans l'exemple suivant, nous créons une fonctiontestFunc, et passons le tupleoptionscomme argument :
Exemple : code du fichier test.jl
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
# Créer un tuple
options = (b = 200, c = 300)
# Exécuter la fonction, tuple passé en argument
testFunc(1, 2, 3; options...)
Utilisez la commandejuliapour exécuter le fichier ci-dessus, la sortie est :
$ julia test.jl x = 1, y = 2, z = 3; a = 10, b = 200, c = 300
Si les arguments spécifiés sont placés après le tuple, ils remplaceront les arguments existants dans le tuple :
Exemple
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
# Créer un tuple
options = (b = 200, c = 300)
# Exécuter la fonction, tuple passé en argument ; les arguments spécifiés avant le tuple ne seront pas prioritaires
testFunc(1, 2, 3; b = 1000_000, options...)
# Exécuter la fonction, tuple passé en argument ; les arguments spécifiés après le tuple seront prioritaires
testFunc(1, 2, 3; options..., b= 1000_000)
Utilisez la commandejuliapour exécuter le fichier ci-dessus, la sortie est :
$ 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 = 300Autres extensions