Silex v0.47.1 / Docs Source canonique ↗

Convertir un nombre

L'opérateur as convertit une valeur numérique vers le type demandé. La conversion est contrôlée : Silex l'interrompt si le type cible ne peut pas représenter la valeur sans perte.

Demander une conversion explicite

Ce programme convertit le même entier en uint8 et en float64 :

func main() {
    let count = 42
    let byte = count as uint8
    let precise = count as float64

    print(byte)
    print(precise)
}

Il affiche :

42
42.0

Le type cible vient après as. Le compilateur déduit donc uint8 pour byte et float64 pour precise.

Comprendre le contrôle effectué

Une conversion explicite doit conserver la valeur exacte. Par exemple, 255 as uint8 réussit, tandis que 256 as uint8 échoue parce qu'un uint8 ne peut pas contenir 256. De même, un nombre à virgule ne peut devenir un entier que s'il se trouve dans sa plage et ne possède aucune partie fractionnaire.

Certaines conversions qui élargissent le type sont implicites, notamment int8 vers int64, uint8 vers uint64 et float32 vers float64. Les autres changements de famille ou de largeur peuvent exiger as. Vous pouvez aussi l'écrire lorsqu'une conversion implicite gagnerait à rester visible.

as ne convertit que des valeurs numériques. Il ne sert pas à transformer un nombre en texte ni à changer le type d'une autre valeur.

Revenir aux valeurs · Choisir un type intégré