Logo DartDart - Le nouveau langage du Web

Les types

Dart est un langage à typage optionnel, c'est à dire que l'on peut donner un type à nos variables mais ce n'est pas obligatoire, en effet le type n'est pas vérifié à l'exécution (Runtime). Les types ne servent qu'à documenter le code, Google a fait cela pour que son langage soit adopté par un maximum de personnes, qu'elles préfèrent un typage statique ou dynamique. Il propose plusieurs types de base, que l'on appelle "built-in" : des nombres, des chaînes de caractères, des booléens, des listes et des tables de hashage. Il n'y a pas de type primitif, tout est objet même les types de base que l'on présente ici, ou encore les fonctions. Toutes les classes héritent de la classe Object, comme en Java. Le type "générique" qui regroupe tous les types est var, comme en JavaScript.

Les nombres

Plusieurs types de nombres sont proposés qui suivent la structure suivante :

Héritage entre les types nombre

Tous les types "nombre" héritent de num. Un int est codé sur un nombre arbitraire de bits, on peut donc utiliser des entiers sans limite de taille. Cependant, cela pose problème lors de la compilation du code en JavaScript qui ne gère pas ce mécanisme. Les doubles (de type double) quant eux sont codés sur 64 bits. Du fait que le typage est optionnel les lignes suivantes sont équivalentes :

var nombre1 = 2;
num nombre2 = 2;
int nombre3 = 2;

Les booléens

Les booléens sont représentés par le type bool. Ils peuvent prendre "true" ou "false" comme valeur, pas d'entier ou autres valeurs. On peut éventuellement leur donner d'autres valeurs, la variable est considérée comment valant "false", dans le mode Production. Dans le mode Checked, une exception est levée. Il vaut donc mieux tester explicitement ce que l'on veut.

Les Chaînes de caratères

Les chaînes de caractères sont représentées par le type String, elles sont encodées en UTF-16. On peut les utiliser avec des doubles quotes ("str") ou de simples quotes ('str'). La comparaison entre deux chaînes peut se faire directement avec l'opérateur "==", contrairement à Java où il faut utiliser la méthode equals. Il est possible de concaténer deux chaines de caractères de la façon suivante :

var str = "Concatenation " " of strings!";

Les listes

Les listes et les tableaux ont un type équivalent : List. Ce type hérite de Collection. On utilise une liste de la façon suivante :

// Création
var list = [2, 4, 6];

// Ajout à la fin
list.add([7, 8, 9]); // => [2, 4, 6, [7, 8, 9]]

// Consultation
var i = list[0]; // => 2
		

La méthode add permet d'ajouter les données à la fin. La consultation se fait comme pour un tableau en Java, avec des crochets ([]).

Les tables de hashage

Les tables de hashage sont représentées par le type Map, il s'agit d'une associations clé -> valeur. Les clés sont des chaînes de caratères (String), la valeur peut être de n'importe quelle type. Si on utilise le constructeur de Map, on peut utiliser le type que l'on veut pour la clé. Voici un exemple d'utilisation :

// Création
Map map = {
	"clé" : "value",
	"entier" : 53
}

// Consultation
var i = map["entier"];

// Ajout
map["animal"] = "chat";