Maison >développement back-end >tutoriel php >[Scala Tour] 3-Type Unifié - TOUR DE SCALA SiFou

[Scala Tour] 3-Type Unifié - TOUR DE SCALA SiFou

不言
不言original
2018-03-30 14:25:251696parcourir

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.

[Scala Tour] 3-Type Unifié - TOUR DE SCALA SiFou

Hiérarchie des types Scala

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>

Conversion de type

Les types de valeurs peuvent être convertis des manières suivantes :

[Scala Tour] 3-Type Unifié - TOUR DE SCALA SiFou

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 et Null

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn