Files
saselang-bible/examples/019-controle-de-flux-examples.md
2026-09-12 08:56:27 +02:00

3.4 KiB

Exemples / DO-DON'T — Chapitre 19 — Contrôle de flux

Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.

Exemples actuellement présents dans le chapitre

Exemple 1

if (condition) {
    action();
} elseif (otherCondition) {
    otherAction();
} else {
    fallback();
}

Exemple 2

int32 result = if (x > 10) {
    emit 1;
} elseif (x > 5) {
    emit 2;
} else {
    emit 3;
};

Exemple 3

Option<uint32> result = if (condition) {
    emit Option::Some(42);
} else {
    emit Option::None;
};

Exemple 4

match (value) {
    pattern1 => {
        statements;
    }

    pattern2 => {
        statements;
    }

    _ => {
        statements;
    }
}

Exemple 5

literal pattern
enum variant pattern
tuple pattern
struct pattern
typed binding pattern
wildcard _
alternative pattern avec |
nested pattern
Range pattern si et seulement si le Range est valide selon les règles de Range

Exemple 6

1 | 2 | 3 => {
    ...
}

Exemple 7

A(uint32 value) | B(uint32 value) => {
    use(value);
}

Exemple 8

Color::Red => {
    ...
}

Exemple 9

Result::Ok(uint32 value) => {
    use(value);
}

Result::Err(Error error) => {
    handle(error);
}

Exemple 10

Result::Ok(_) => {
    ...
}

Exemple 11

(0, 0) => {
    origin();
}

(int32 x, 0) => {
    horizontal(x);
}

(int32 x, int32 y) => {
    other(x, y);
}

Exemple 12

Point {
    x: 0,
    y: int32 vertical
} => {
    use(vertical);
}

Exemple 13

Point {
    x: 0,
    y: _
}

Exemple 14

SomeEnum::PointValue(
    Point {
        x: 0,
        y: int32 y
    }
) => {
    use(y);
}

Exemple 15

int32 result = match (value) {
    0 => {
        emit 10;
    }

    _ => {
        emit 20;
    }
};

Exemple 16

int32 result;

result = if (condition) {
    emit 1;
} else {
    emit 2;
};

Exemple 17

return      V1 requis
break       V1 requis
continue    V1 requis
yield       réservé pour generators/coroutines si non finalisé en V1

Exemple 18

while (condition) {
    ...
}

dowhile (condition) {
    ...
}

for (initialization; condition; update) {
    ...
}

foreach (Type item in iterable) {
    ...
}

Exemple 19

dowhile (condition) {
    statements;
}

Exemple 20

for (;;) {
    ...
}

Exemple 21

while (true) {
    ...
}

Exemple 22

for (i = 0, j = 5; i < x || j < y; i += 1, j += 1) {
    ...
}

Exemple 23

foreach (Type item in iterable) {
    ...
}

Exemple 24

until (...)       -> utiliser while (!...)
repeat ... until  -> utiliser dowhile (!...)
unless (...)      -> utiliser if (!...)
loop { ... }      -> utiliser while (true) { ... }

Exemple 25

;
;;
foo();;

Exemple 26

foo(first, second, third);   // valide
foo(first, second, third,);  // invalide

DO / DON'T / WHY / compiler error / edge cases

La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration 0.2.12 conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.