Files
saselang-bible/chapters/015-fonctions-methodes-et-clsmethod.md
2026-09-12 08:56:27 +02:00

1.6 KiB

15. Fonctions, méthodes et clsmethod

15.1 Catégories — V1 REQUIS — FIGÉ

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

15.2 Retours directs et Result — V1 REQUIS — FIGÉ

L'ancienne règle « toute fonction/méthode retourne Result » est supprimée.

Règle V1 :

opération infaillible
    -> retourne directement T

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

Exemples infaillibles :

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

Exemples faillibles :

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

15.3 Retour explicite — V1 REQUIS — FIGÉ

Pas de retour implicite de dernière expression.

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

return quitte la fonction/méthode.

15.4 Surcharge — V1 REQUIS — FIGÉ

Surcharge autorisée pour fonctions et méthodes.

La signature ne contient pas le type de retour.

Il ne peut donc pas exister deux overloads distingués uniquement par leur retour.

15.5 Résolution de surcharge — V1 REQUIS — À FINALISER

Les règles exactes de préférence entre exact match, conversions explicites/contextuelles, generics et variadiques doivent être figées.

Objectif : aucune résolution basée sur le type de retour et aucune conversion implicite ambiguë.