Объявления
- Объявление переменной
- Присвоение переменных
Объявление переменной
Переменные в Pine объявляются специальным символом = и необязательным ключевым словом var одним из следующих способов:
<identifier> это имя объявляемой переменной.
<type> может быть одним из предопределенных ключевых слов: float, int, bool, color, string, line или label. Однако в большинстве случаев явное объявление типа является излишним, потому что тип автоматически выводится из <expression> справа от = во время компиляции, поэтому решение об их использовании часто является вопросом предпочтения.
Например:
В первой строке примера компилятор не может определить тип переменной baseLine0, потому что na — это общее значение неопределенного типа. Объявление переменной baseLine1 корректно, так как ее тип с плавающей точкой объявлен явно. Объявление переменной baseLine2 также корректно, поскольку ее тип может быть получен из выражения float(na), которое является явным приведением значения na к типу float. Объявления baseLine1 и baseLine2 эквивалентны.
Ключевое слово var — это специальный модификатор, который предписывает компилятору создать и инициализировать переменную только один раз. Такое поведение очень полезно в тех случаях, когда значение переменной должно сохраняться через итерации скрипта на последовательных барах. К примеру, предположим, что мы хотим посчитать количество зеленых баров на графике:
Без модификатора var счетчик переменных сбрасывался бы на ноль (теряя таким образом свое значение) каждый раз, когда новое обновление бара запускало перерасчет скрипта.
В Pine v3 можно было бы написать исследование «Green Bars Count» без использования ключевого слова var:
Код v4 более удобочитаем и может быть более эффективным, если, например, переменная count инициализируется затратным вызовом функции вместо 0.
Примеры простых объявлений переменных:
Примеры с модификаторами типов и ключевым словом var:
Пример, иллюстрирующий эффект ключевого слова var:
Присвоение переменных
Изменяемая переменная — это переменная, которой можно присвоить новое значение. Для присвоения переменной нового значения должен использоваться оператор :=. Переменная должна быть объявлена до того, как ей будет присвоено значение (см. объявление переменных выше).
Тип переменной определяется во время объявления. С этого момента переменной может быть присвоено значение выражения, только если и выражение, и переменная принадлежат к одному и тому же типу, в противном случае произойдет ошибка компиляции.
Пример назначения переменной: