2.1 KiB
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.