En Scala, toutes les valeurs ont un type, y compris les nombres et les fonctions. La figure suivante illustre un sous-ensemble de la hiérarchie des types.
Any
Un type est le type parent de tous les types, également appelé niveau supérieur taper. Il définit certaines méthodes courantes telles que equals
, hashCode
et toString
. Any
a deux sous-classes directes : AnyVal
et AnyRef
.
AnyVal
représente le type de valeur. Il existe 9 types de valeurs prédéfinis, qui ne sont pas nullables : Double
, Float
, Long
, Int
, Short
, Byte
, Char
, Unit
et Boolean
. Unit
est un type valeur sans aucune signification. Une seule instance de Unit
peut être déclarée comme ceci : ()
. Toutes les fonctions doivent renvoyer une valeur, donc Unit
est un type de retour utile.
AnyRef
représente un type de référence. Tous les types sans valeur sont définis comme types de référence. Chaque type défini par l'utilisateur dans Scala est un sous-type de AnyRef
. Si Scala est utilisé dans un environnement d'exécution Java, alors AnyRef
correspond à Java.lang.object
.
Voici un exemple qui démontre que les chaînes, les entiers, les caractères, les booléens et les fonctions sont des objets comme les autres objets :
val list: List[Any] = List( "a string", 732, // an integer 'c', // a character true, // a boolean value () => "an anonymous function returning a string" ) list.foreach(element => println(element))
Il définit le type List[Any]
liste de variables. La liste est initialisée avec des éléments de différents types, mais ce sont toutes des instances de scala.Any
vous pouvez donc tous les ajouter à la liste.
Ce qui suit est le résultat du programme :
a string 732 c true <function>
Les types de valeurs peuvent être convertis des manières suivantes :
Exemple :
val x: Long = 987654321 val y: Float = x // 9.8765434E8 (note that some precision is lost in this case) val face: Char = '☺' val number: Int = face // 9786
La conversion est à sens unique. La dernière instruction ci-dessous ne sera pas compilée :
val x: Long = 987654321 val y: Float = x // 9.8765434E8 val z: Long = y // Does not conform
Vous pouvez également convertir un type référence en sous-type. Ceci sera abordé dans un article ultérieur.
Nothing
sont des sous-types de tous types, également appelés types inférieurs. Tapez Nothing
n’a aucune valeur. Les utilisations courantes consistent à signaler la non-terminaison, comme le lancement d'une exception, la sortie d'un programme ou une boucle infinie (c'est-à-dire qu'il s'agit d'une expression qui n'évalue pas à une valeur ou d'une méthode qui ne renvoie pas une valeur normale).
Null
est un sous-type de tous les types de référence (c'est-à-dire tout sous-type de AnyRef
). Il possède une valeur unique identifiée par le mot-clé null
. Null
est principalement utilisé pour l'interopérabilité avec d'autres langages JVM et ne devrait presque jamais être utilisé dans le code Scala. Nous aborderons les alternatives à null
dans un article ultérieur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!