Типы данных и литералы

Все значения в языке относятся к одному из типов данных. Тип данных определяет допустимые значения и операции над этими значениями. В языке уже имеется несколько определённых типов данных. Рассмотрим некоторые из них. Если какое-либо значение прописано прямо в коде, то оно называется литералом.

Тип Number

К этому типу относятся числа. Примеры литералов типа Number:

5
5.7
0.234
100_000_000 // в литерале могут быть нижние подчёркивания,
            // они могут использоваться для разделения разрядов
            // и не влияют на значение

Числа можно складывать, умножать, вычитать, превращать в строку и т.д.

println (4 + 5) //-> 9 сложение
println (3 * 2) //-> 6 умножение
println (1 / 2) //-> 0.5 деление
println (-1)    //-> -1 унарный минус
println (5 ^ 2) //-> 25 возведение в степень

Чтобы преобразовать число в строку нужно воспользоваться функцией Number.toText:

println (Number.toText 6.4) //-> 6.4

Тип Text

Этот тип необходим для представления в программе строк. Текстовые литералы начинаются с символа двойной кавычки и заканчиваются им же:

println "xxx" //-> xx

Если в текст нужно добавить сам знак кавычки, его нужно написать после символа обратного слеша. Это называется экранированием.

println "this is \" symbol" //-> this is " symbol

В текст также можно вставлять произвольные выражения языка. Результат этих выражений будет в результирующей строке, они должны заключаться в \( и )

println "1 + 2 = \(1 + 2)" //-> 1 + 2 = 3

Это называется строковой интерполяцией.

Литерал также может быть многострочным

println "First line
Second line"

//-> First line
// Second line

Вы можете расположить его на нескольких строках, а сам перенос экранировать, тогда текст будет восприниматься как однострочный:

println "First line \
Also first line" //-> First line Also first line

Для строк также определён ряд операторов:

println ("x" + "y") //-> xy (сложение)
println (*"xxx") //-> 3 (длина строки)
println ("x" * 4) //-> xxxx (повторение строки)

И ряд функций модуля Text:

println (Text.toUpper "xy") //-> XY (переводит в верхний регистр)
println (Text.reverse "xy") //-> yx (переворачиает строку)
println (Text.parseNumber "5") //-> Some 5 (превращает  строку в число)

Тип Boolean

Представляет логические данные. Может иметь значение true или false. Используется для ряда более сложных конструкций, значение этого типа возвращает большинство операторов сравнения:

println (5 = 5) //-> true
println (3 > 7) //-> false
println ("x" = "x") //-> true
println (true = false) //-> false

В тип Boolean может конвертироваться любой другой тип.

Тип List

Тип List является сложным типом, его значение - это список с элементами любого типа.

println [4, 5, true] //-> [4, 5, true]

Вложенные списки также доступны:

println [[0,0], [1,0], [0,1]] //-> [[0, 0], [1, 0], [0, 1]]

Для список определён ряд операторов и функций в модуле List

println ([4, 5, 6] + [7, 8, 9]) //-> [4, 5, 6, 7, 8, 9]
println (*[5, 6, 7]) //-> 3

Last updated