Types de base
Les types de base suivant sont supportés par le langage.
Boolean
Représente un booléen pouvant prendre uniquement soit la valeur True, soit la valeur False.
Voir les méthodes du type Boolean (Qubes 6.1)
Integer
Représente un entier 64bit, signé.
Les valeurs possibles sont entre +/- 263, ie. +/- 9.22x1018, ou encore plus ou moins 9 milliards de milliards.
A partir de Qubes10.0 le caractère '_' peut être utilisé pour délimiter les chiffres et sera ignoré.
Un entier peut être défini en hexadécimal en le précédant d'un signe $, par exemple $20 = 32.
A partir de Qubes 5.6 les préfixes 0x (zéro x, pour hexadécimal) et 0b (zéro b, pour binaire) sont aussi supportés, et à partir de Qubes 9.0 le préfixe %. Le caractère '_' peut être utilisé pour séparer les groupes de bits et est non significatif.
Par exemple 0xA = 0b1010 = $A = 10 et %1100_0011 = $C3.
Voir les méthodes du type Integer (Qubes 6.1)
Float
Représente un nombre flottant en double précision, suivant la norme IEEE754.
La précision est d'environ 16 décimales, et la plage de valeur couverte est celle de +/- 10+/-300, cependant, certaines fraction décimales ne sont pas représentables exactement (cf. representable numbers). Pour plus de détails, se reporter à la norme IEEE754.
Une valeur flottante constante est définie :
- soit par un nombre contenant un point (ex : 1.2 ou 1. ou .02)
- soit par la notation scientifique (ex : 23.45x10-6 peut s'écrire 23.45e-6 ou 23.45E-6 ; 12e3 = 12000.0)
Le type Float est aussi utilisé pour stocker des références date/heure.
La partie entière représentant le nombre de jours depuis l'époque (30 décembre 1899), et la partie fractionnaire, la fraction du jour (par exemple 1 minute vaut 1/(24*60) = 1/1440), cette convention est aussi celle de Microsoft COM, Excel, LibreOffice Calc et Google Sheets (cf. Epoch).
A partir de Qubes10.0 le caractère '_' peut être utilisé pour délimiter les chiffres de la mantisse et sera ignoré.
Voir les méthodes du type Float (Qubes 6.1)
String
Représente une chaîne de caractères Unicode encodée en utf-16. La chaîne peut contenir des caractères Unicode arbitraires (y compris le caractère NUL, #0000), et peut héberger un nombre maximal de 2147483647 caractères (2^31-1) ou la mémoire contigüe disponible.
Une String peut parfois être utilisée pour stocker des données binaires brutes.
Les chaînes sont délimitées par des apostrophes ' ou des guillemets ".
Pour utiliser le caractère délimiteur dans la chaîne, il suffit de le doubler.
L'apostrophe définit une chaîne ne pouvant s'étendre que sur une ligne, alors que les guillemets autorisent la présence de retours à la ligne dans la chaîne.
Les caractères peuvent être spécifiés directement par leur représentation Unicode si l'éditeur la supporte.
Sinon, il est aussi possible de les spécifier par leur code (en Unicode), en les précédant d'un #.
Ainsi, un retour chariot + ligne suivante (CR+LF) correspond a #13#10 (ou aussi #$0D#$0A en hexadécimal), et un smiley (😀) sera par exemple encodé avec #$1F600.
Enfin des chaînes multi-lignes peuvent être définies en les débutant par #' ou #", dans ce cas les indentations communes en début de ligne seront ignorées, ainsi qu'une première ligne vide (retour à la ligne juste après le #' ou #"). Cela permet de formater de manière plus libre les chaînes multi-lignes.
A partir de Qubes 10.0 le format avec délimiteur ''' (trois apostrophes) introduit par Delphi Athens est aussi supporté.
Voir les méthodes du type String (Qubes 6.1)
Variant
Un variant peut héberger des données de n'importe quel type.
Les expressions utilisant des variant ne sont pas vérifiables en totalité à la compilation, certains problèmes pourront donc n'apparaître que de manière contextuelle à l'exécution.
ComVariant
ComVariant est un sous-type de Variant destiné à l'interfaçage COM/OLE, il support notamment des appels OLE Automation (permettant de piloter Office, d'accéder au WMI, au Shell, etc.).
ComVariantArray est un sous-type de ComVariant pour la gestion des tableaux COM multi-dimensionnels.
JSONVariant
Le type JSONVariant permet de consulter et manipuler des structures JSON (cf. Class/JSON)
BigInteger
Le type BigInteger gère des nombres entiers très grands, pouvant contenir un nombre de chiffres limité uniquement par la mémoire disponible (Qubes 6.8).
Voir les méthodes du type BigInteger
File
Le type File fournit un accès direct au système de fichiers (Qubes 6.8).
Voir les méthodes du type File
ByteBuffer
Le type ByteBuffer permet de manipuler un objet binaire (Qubes 9.0).