Files
saselang-bible/examples/015-fonctions-methodes-et-clsmethod-examples.md
2026-09-13 10:20:16 +02:00

2.2 KiB

Exemples / DO-DON'T — Chapitre 15 — Fonctions, méthodes et clsmethod

Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.

Exemples extraits du chapitre

Exemple 1

func       fonction libre
method     méthode d'instance
clsmethod  méthode de classe
operator   implémentation d'un contrat opérateur

Exemple 2

T
T throws SomeException
T faults SomeFault
T throws SomeException faults SomeFault
Result<T,E>
Result<T,E> throws SomeException
Result<T,E> faults SomeFault

Le type de retour et le mécanisme d'échec sont indépendants.

Exemple 3

func readConfig(String path) -> Config
    throws IOException

method elementAt(uint64 index) -> T
    faults IndexOutOfBoundsFault

Exemple 4

func parseExternalInput(String input) -> Result<Value, ParseError>

Result reste utilisé lorsque l'échec doit être transporté comme une valeur.

Exemple 5

return value;
return Result::Ok(value);
return Result::Ok(Void);

Exemple 6

class User {
    const method getName() -> String {
        return this::name;
    }

    method setName(String name) -> Void {
        this::name = name;
        return Void;
    }
}

Exemple 7

User a = ...;
const User b = a;

a::setName("John"); // OK
a::getName();       // OK

b::getName();       // OK
b::setName("John"); // ERROR

Exemple 8

réassigner un champ via this
appeler une method non-const via this
obtenir puis exposer comme mutable un accès disponible uniquement via this const

Exemple 9

allouer des valeurs locales
modifier des valeurs locales mutables
faire de l'I/O
faire du logging
lever une Exception déclarée
modifier un état externe auquel elle possède indépendamment un accès mutable

Exemple 10

func display(const User user) -> Void

Exemple 11

const method getOwner() -> const User {
    return this::owner;
}

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

À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.