Skip to content

Commit 31937cc

Browse files
authored
add fr tour tuples (#2251)
1 parent 4b46ca1 commit 31937cc

File tree

1 file changed

+71
-1
lines changed

1 file changed

+71
-1
lines changed

_fr/tour/tuples.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,80 @@ layout: tour
33
title: Tuples
44
partof: scala-tour
55

6-
num:
6+
num: 8
77

88
language: fr
99

1010
next-page: mixin-class-composition
1111
previous-page: traits
1212
---
13+
14+
En Scala, un tuple est une valeur qui contient un nombre fixe d'éléments, chacun avec son propre type. Les tuples sont immuables.
15+
16+
Les tuples sont notamment utiles pour retourner plusieurs valeurs depuis une méthode.
17+
18+
Un tuple avec deux éléments peut être créé de la façon suivante :
19+
20+
```scala mdoc
21+
val ingredient = ("Sugar" , 25)
22+
```
23+
24+
Cela crée un tuple contenant un élément de type `String` et un élément de type `Int`.
25+
26+
Le type inféré de `ingredient` est `(String, Int)`, qui est un raccourci pour `Tuple2[String, Int]`.
27+
28+
Pour représenter les tuples, Scala utilise une série de classes : `Tuple2`, `Tuple3`, etc., jusqu'a `Tuple22`.
29+
Chaque classe a autant de paramètres de types qu'elle a d'éléments.
30+
31+
## Accéder aux éléments
32+
33+
Une des méthodes pour accéder aux éléments d'un tuple est par position. Les éléments sont nommés individuellement `_1`, `_2`, et ainsi de suite.
34+
35+
```scala mdoc
36+
println(ingredient._1) // Sugar
37+
println(ingredient._2) // 25
38+
```
39+
40+
## Pattern matching sur les tuples
41+
42+
Un tuple peut aussi être décomposé en utilisant le pattern matching :
43+
44+
```scala mdoc
45+
val (name, quantity) = ingredient
46+
println(name) // Sugar
47+
println(quantity) // 25
48+
```
49+
50+
Ici le type inféré de `name` est `String` et le type inféré de `quantity` est `Int`.
51+
52+
Voici un autre exemple de pattern-matching sur un tuple :
53+
54+
```scala mdoc
55+
val planets =
56+
List(("Mercury", 57.9), ("Venus", 108.2), ("Earth", 149.6),
57+
("Mars", 227.9), ("Jupiter", 778.3))
58+
planets.foreach {
59+
case ("Earth", distance) =>
60+
println(s"Our planet is $distance million kilometers from the sun")
61+
case _ =>
62+
}
63+
```
64+
65+
Ou, en décomposition dans un `for` :
66+
67+
```scala mdoc
68+
val numPairs = List((2, 5), (3, -7), (20, 56))
69+
for ((a, b) <- numPairs) {
70+
println(a * b)
71+
}
72+
```
73+
74+
## Les tuples et les classes de cas
75+
76+
Les utilisateurs trouvent parfois qu'il est difficile de choisir entre les tuples et les classes de cas. Les classes de cas ont des éléments nommés. Les noms peuvent améliorer la lisibilité de certains codes. Dans l'exemple ci-dessus avec planet, nous pourrions définir `case class Planet(name: String, distance: Double)` plutôt que d'utiliser les tuples.
77+
78+
## Plus d'informations
79+
80+
* Apprennez-en d'avantage sur les tuples dans [Scala Book](/overviews/scala-book/tuples.html)
81+
82+
Traduction par Antoine Pointeau.

0 commit comments

Comments
 (0)