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

70 lines
1.6 KiB
Markdown

# 15. Fonctions, méthodes et `clsmethod`
## 15.1 Catégories — V1 REQUIS — FIGÉ
```text
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 :
```text
opération infaillible
-> retourne directement T
opération pouvant produire une erreur récupérable
-> retourne Result<T>
ou Result<T,E>
```
Exemples infaillibles :
```text
method length() -> uint64
method containsKey(K key) -> bool
Object::sameInstance(Object other) -> bool
func min(int32 a, int32 b) -> int32
```
Exemples faillibles :
```text
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.
```text
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ë.
---