Chaînes

Important

La prise en charge des chaînes est actuellement limitée aux déclarations de type pour les configurations de simulateur et à leur utilisation dans la définition de scénarios de cours.

Un type string peut exprimer toute séquence affichable de caractères Unicode.

Littéraux de chaîne

Placez les littéraux de chaîne entre guillemets doubles ("). Pour placer un guillemet double dans une séquence d’échappement au sein d’une chaîne, utilisez la barre oblique inverse (\).

"I love big Bonsai brains!"
""
"\"Hello world\" is an overused example in language references."

Contraintes d’énumération

Inkling prend en charge les chevrons (<>) pour définir des contraintes pour les types string afin de limiter les valeurs à un jeu énuméré.

string<"A", "B", "C">
string<"Z">
string<Left = "L", Straight = "S", Right = "R">

Conseil

Si votre contrainte énumérée ne contient qu’une seule valeur, elle peut être représentée plus efficacement avec la valeur seule. Par exemple, utilisez type HelloWorld "Howdy!" au lieu de type HelloWorld string<"Howdy">.

Utiliser des énumérations identifiées

Les types énumérés comportant des identificateurs symboliques sont accessibles en tant que constantes avec le nom de type, l’opérateur point (.) et l’identificateur. Par exemple :

type Direction string<Left = "L", Straight = "S", Right = "R">

const StartingDirection = Direction.Left

Équivalence et cast

Équivalence de type et cast

Équivalence

Un type string, X, est équivalent au string type Y si les valeurs d’énumération prescrites représentent le même ensemble.

Exemples d’équivalence

Les types suivants ne sont pas équivalents, car les ensembles énumérés sont différents :

type BotDirection string<Left = "L", Straight = "S", Right = "R">
type AllDirection string<Left = "L", Straight = "S", Back = "B", Right = "R">

Les types suivants sont équivalents, même si les étiquettes se trouvent dans des ordres différents, car les ensembles de valeurs résultants sont les mêmes :

type CartDirection string<Left = "L", Straight = "S", Right = "R">
type VehicleDirection string<Left = "L", Right = "R", Straight = "S">

Transtypage

Un type chaîne, X, peut être casté en type chaîne Y si l’énumération prescrite de X est égale à l’énumération prescrite de Y ou est un sous-ensemble de cette dernière.

Par exemple, supposons les types suivants :

type BotDirection string<Left = "L", Straight = "S", Right = "R">
type AllDirection string<Left = "L", Straight = "S", Back = "B", Right = "R">

var BotStartDirection: BotDirection = BotDirection.Left
var ArmStartDirection: AllDirection = AllDirection.Left

L’expression suivante est valide, car l’ensemble de toutes les valeurs possibles pour BotStartDirection contient dans l’ensemble des valeurs valides pour le type assigné à ArmStartDirection :

ArmStartDirection = BotStartDirection

L’expression suivante n’est pas valide, car les valeurs possibles de ArmStartDirection incluent des valeurs qui seraient non valides pour le type assigné à BotStartDirection :

BotStartDirection = ArmStartDirection