Перейти к основному содержимому
Версия: Legacy

Специальные типы переменных

title


Ты конечно можешь использовать обычный val

val staticVariable: String = "Эта переменая - не изменяемая"

Но если нужно сохранить денные этой переменной, то оно не сработает, т.к. после перезапуска скрипта - значение переменной сбросится. На такой случай есть 3 специальных типа переменных:

// Переменаня, которая сохраняет значение пока скрипт работает //
// Не совместим с var //
val lazyVariable by lazy { ... }

// Переменная, которая имеет память и сохраняет её до выхода из мира //
var runtimeVariable by runtime { ... }

// Переменная, которая имеет гига-память //
// т.е. даже после перезахода в игру - она сохранит своё значение //
val saveableVariable by saveable { ... }

И уже в { ...} вы можете записать как и обычное значение: var health by lazy {10}, так и целые кусочки кода:

var moneys by saveable {
If({ me().health >= 10f }) {
620
} Else {
0
}
}

Да, есть ещё конечно и var - но работать так как обычно он должен работать - не будет в скриптах. Именно по этому для скриптов есть универсальный метод next:

next {
код, который должен будет выполнятся во время работы скрипта, а не во время
его компиляции.
}
Пример
var dynamicVariable = "Это динамическая переменная"

next { dynamicVariable = "Теперь тут хранится совершенно другое"}

next {
val privateVariable = 10 // До неё не достучаться вне next

dynamicVariable = "Здесь есть число $privateVariable"
}