Tableaux

ton.array nums = [1, 2, 3]
push(nums, 4)          // [1, 2, 3, 4]
print(nums[0])          // 1
nums[0] = 10             // [10, 2, 3, 4]
print(len(nums))          // 4

Voir Fonctions natives pour l'ensemble des opérations sur tableaux (push/pop/shift/unshift/slice/join/sort/reverse/contains/indexOf/map/filter/reduce/find/any/all). Indexer hors limites est une erreur d'exécution, pas nil.

Les chaînes prennent aussi en charge l'indexation en lecture seule — s[0] est le premier caractère, sous forme de chaîne d'un caractère. Les chaînes sont immuables : s[0] = "x" est une erreur d'exécution ; construis une nouvelle chaîne avec replace()/substring()/le module ton.strings à la place.

Spread (...) éclate les éléments d'un autre tableau directement dans un littéral :

ton.array a = [1, 2, 3]
ton.array b = [0, ...a, 4]    // [0, 1, 2, 3, 4]
ton.array deux = [...a, ...a]  // [1, 2, 3, 1, 2, 3]

L'expression étalée doit elle-même être un tableau — étaler autre chose est une erreur d'exécution.

Indices négatifs et tranches (depuis beta-2.0.0) — a[-1] est le dernier élément. a[début:fin] renvoie un nouveau tableau de début jusqu'à fin (exclu) ; chaque borne peut être omise, et les deux peuvent être négatives. Les tranches marchent aussi sur les chaînes.

ton.array a = [10, 20, 30, 40, 50]
print(a[-1], a[1:3], a[:2], a[3:], a[-2:])    // 50 [20, 30] [10, 20] [40, 50] [40, 50]
print("TON618"[0:3], "TON618"[-3:])          // TON 618

Déstructuration — dépaquette un tableau dans des variables, ...reste récupérant ce qui reste :

ton.let [premier, second, ...autres] = a
print(premier, second, autres)                // 10 20 [30, 40, 50]

Syntaxe méthode — toute fonction de tableau peut être appelée sur le tableau lui-même (voir Syntaxe méthode) :

ton.array scores = [12, 7, 30, 18]
print(scores.filter(s => s > 10).map(s => s * 2).sorted())   // [24, 36, 60]
print(scores.sum(), scores.max(), scores.len(), scores.length)

Modifier cette page sur GitHub