Перейти к содержанию

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

← Быстрый старт · Оглавление · Далее: параметры →