v0.2.12
This commit is contained in:
69
chapters/015-fonctions-methodes-et-clsmethod.md
Normal file
69
chapters/015-fonctions-methodes-et-clsmethod.md
Normal 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ë.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user