This commit is contained in:
2026-09-12 08:56:27 +02:00
parent 426aa92d0d
commit 18306bdc8c
116 changed files with 11080 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
# 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ë.
---