• [^] # Re: Merci pour cette description détaillée !

    Posté par . En réponse à la dépêche À la découverte du langage V. Évalué à 3. Dernière modification le 16 septembre 2024 à 20:22.

    Si je comprends, le langage ne contient pas de Null

    Oui c'est l'idée, après je ne suis pas allé dans le détail, mais comme V permet de travailler avec des bibliothèques C sans couche d'interopérabilité, la notion de nil est présente dans le langage, mais a utilisé avec précaution.

    Il est aussi possible de déclarer des champs de structure avec comme valeur par défaut 0 soit un pointeur null...

    J'ai un peu du mal à comprendre pourquoi un des cas doit être marqué unsafe et l'autre non.

    Personnellement, je n'aime vraiment pas cette notion de unsafe dans V, tout comme je ne l'apprécie pas dans Rust. Je préfère de loin l'approche de Zig sur ce point.

    Comme je le dis dans la dépêche, V cherche à faire un grand écart entre facilité d'utilisation, typage fort, rapidité et lien direct avec le C. Forcément, certains compromis doivent être fait, la notion de unsafe en est un.

    et passe par un type ['a] Optionnal

    Oui, c'est peut-être mieux détaillé dans cette partie du guide (voir l'exemple à la fin).

    Donc pas de pattern matching pour gérer les Optional mais soit via or, soit via un if/else comme décrit dans cette doc.

    Exemple :

    fn get_ten_or_none(val int) ?int {
     if val == 10 {
     return 10
     }
     return none
    }
    fn main() {
     if val := get_ten_or_none(9) {
     println('val : ${val}')
     } else {
     println('no value')
     }
     val2 := get_ten_or_none(10) or { 5 }
     println('val2 : ${val2}')
    }