Files
saselang-bible/examples/015-fonctions-methodes-et-clsmethod-examples.md
2026-09-12 19:31:05 +02:00

2.1 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

opération infaillible
    -> retourne directement T

opération pouvant produire une erreur récupérable
    -> retourne Result<T>
       ou Result<T,E>

Exemple 3

method length() -> uint64
method containsKey(K key) -> bool
Object::sameInstance(Object other) -> bool
func min(int32 a, int32 b) -> int32

Exemple 4

func readFile(String path) -> Result<String, IoError>
method parse(String input) -> Result<Value, ParseError>

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.