Dart - 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 :
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";