2. Основы языка¶
← Быстрый старт · Оглавление · Далее: параметры →
Переменные¶
Переменные начинаются с $:
$value = 10
$user-name = "Alex"
$done = false
Правила имени:
- имя начинается с
$; - после
$должна идти строчная буква или_; - дальше можно использовать строчные буквы, цифры и дефис;
- имя не может оканчиваться дефисом.
Имена с _ используются как закрытые имена в модулях:
$public-value = 10
$_private-value = 20
Литералы¶
$nothing = null
$enabled = true
$count = 42
$ratio = 10.5
$text = "Hello\n"
$path = p"build/output.txt"
$pattern = re"status=([0-9]+)"
$items = ["a", "b", "c"]
$meta = map {
"name": "report"
"size": 1024
}
Строки¶
Строки пишутся в двойных кавычках. Поддерживаются escape-последовательности \n, \r, \t, \", \\.
$name = "Alex"
$message = "Hello, $name"
println $message
Чтобы вывести знак $ буквально перед именем, экранируйте его:
$text = "price is \$value"
Операторы¶
Арифметика:
$a = 10
$b = 3
println ($a + $b)
println ($a - $b)
println ($a * $b)
println ($a / $b)
println ($a % $b)
Составные присваивания:
$value = 1
$value += 2
$value *= 10
Сравнения:
if $value == 30 {
println "equal"
}
if $value != 0 and $value >= 10 {
println "large enough"
}
Булевы операторы можно писать словами или символами:
if $ready and not $failed {
println "ok"
}
if $ready && !$failed {
println "ok too"
}
and и or вычисляются лениво: правый операнд не вычисляется, если результат уже понятен по левому.
Проверка типа¶
Оператор is проверяет тип значения:
$items = [1, 2, 3]
if $items is List {
println "list size=" + $items.Size()
}
if 10 is Integer {
println "integer"
}
Встроенные имена типов: Any, Object, Null, Number, Integer, Decimal, String, Path, Regex, Boolean, List, Map, HashMap.
Проверять можно и Java-классы:
use [[ java.lang.StringBuilder ]] as StringBuilder
$builder = new StringBuilder()
if $builder is StringBuilder {
println "builder"
}
Пути¶
Пути создаются литералом p"...". Оператор / добавляет сегмент пути:
$dir = p"build"
$file = $dir / "report.txt"
println "file=" + $file