v0.2.12
This commit is contained in:
54
chapters/011-tuples.md
Normal file
54
chapters/011-tuples.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 11. Tuples
|
||||
|
||||
## 11.1 Nature — V1 REQUIS — FIGÉ
|
||||
|
||||
Un tuple est un type structurel anonyme, hétérogène, d'arité fixe.
|
||||
|
||||
Il n'a pas de `.saseltype`.
|
||||
|
||||
```text
|
||||
(int32, String)
|
||||
```
|
||||
|
||||
`(T)` est un groupement, pas un tuple à un élément.
|
||||
|
||||
Il n'existe pas de tuple `()` ; `Void` exprime l'absence de valeur.
|
||||
|
||||
Arity minimale : 2.
|
||||
|
||||
## 11.2 Champs — V1 REQUIS — FIGÉ
|
||||
|
||||
Les tuples ne possèdent pas de noms de membres persistants.
|
||||
|
||||
Si des champs nommés stables sont nécessaires, utiliser une `struct`.
|
||||
|
||||
La déstructuration peut nommer des variables locales :
|
||||
|
||||
```text
|
||||
(int32 id, String name) = value;
|
||||
```
|
||||
|
||||
Ces noms ne changent pas le type du tuple.
|
||||
|
||||
## 11.3 Indexation — V1 REQUIS — FIGÉ
|
||||
|
||||
Accès positionnel :
|
||||
|
||||
```text
|
||||
tuple[0]
|
||||
tuple[1]
|
||||
```
|
||||
|
||||
L'index doit être une constante connue à la compilation puisque le type de retour peut varier suivant la position.
|
||||
|
||||
Le tuple n'implémente donc pas un `OpIndex<uint64,T>` homogène ordinaire.
|
||||
|
||||
## 11.4 Égalité/comparaison intrinsèque — V1 REQUIS — FIGÉ
|
||||
|
||||
Si tous les éléments permettent l'égalité pertinente, le tuple peut être comparé composant par composant.
|
||||
|
||||
Si tous les éléments sont comparables, l'ordre du tuple est lexicographique.
|
||||
|
||||
Si un composant comparé retourne `Ordering::Unordered`, le tuple est `Unordered`.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user