Всем привет!
Как я писал ранее, язык LUA является обычным языком программирования. В данном выпуске рассмотрим основные его команды, конструкции и принципы работы. Я расскажу только о тех конструкция, которые я сам применял в работающих скриптах. Сразу оговорюсь, что это достаточно примитивные конструкции. Тем не менее, из них можно наворотить достаточно сложные скрипты.
====================================
Краткое содержание данного канала.
====================================
Также отмечу, если материалов из данного выпуска для ваших целей будет недостаточно, то можете поискать в интернете возможности в языке LUA, и, если они Вам подойдут, то можете спокойно использовать.
Постарайтесь «прощупать» приведенные примеры, написать их в тестовой программе, запустить код, посмотреть результаты. Используйте команду message, для вывода результатов.
Итак, приступим …
0. Комментарии.
В LUA комментарии отделаются двумя тире («--»).
Это однострочный комментарий. Всё, что следует после двух тире до конца строки не воспринимается как команды и не исполняется как код.
Я использую только однострочные комментарии.
Старайтесь комментировать свой код, что бы Вы понимали суть написанного, даже если вернетесь к нему через несколько лет.
1. Переменные.
Тут все достаточно просто. Есть наименование переменной, есть её содержание. Если написать:
Ave_summ = 0;
То в переменную с названием «Ave_summ» занесется числовое значение равное 0.
Если записать:
Ave_summ = “Привет, мир!”;
То в переменную «Ave_summ» запишется строка «Привет, мир!».
Классический пример, который я использую практически во всех своих скриптах:
Kod_klienta="OPEN544653";
Torg_schet="SPBFUTJRх53";
Этими командами я определяю переменные, в которых лежат код клиента, торговый счет. Эти данные в дальнейшем нужны для запуска других команд QLUA, например, для проверки остатков на счете.
Нужно поговорить о том, как нужно именовать переменные. По большому счету их можно именовать как угодно латинскими буквами. Но, нужно избегать названий, которые однозначно могут совпадать с именами встроенных команд. Например, нельзя переменную назвать «message», так как такое слово используется для команды вывода сообщения.
Вообще переменную нужно называть так, что бы Вам было понятно что это такое. В идеале, если Вы хорошо знаете английский язык, то имена переменным нужно давать на английском. Главное, что бы Вы понимали, что и через 3-5 лет Вам будет понятно что это написано.
Если необходимо в названии переменной использовать несколько слов для понимания, то используйте несколько слов. Хоть так: Ostatki_scheta_posle_analiza_svechi.
Как Вы можете увидеть, я разделяю слова символом «_». Хотя нужно сказать, что это устаревший подход. Возможно, что со временем на канале я расскажу про более современный подход, и почему я использую то, что использую.
Так же, в любом языке программирования есть понятие типов данных. Не будем сильно углубляться. Нам нужны два типа данных: числа и строки. Выше я показал, что в переменную записываются числа, если они записаны без кавычек, и строки записываются, если они обрамлены кавычками.
Тут отдельно нужно поговорить про команду соединения строк. В LUA эта команда «..»(две точки).
То есть если записать:
function main()
Peremennaya1 = "Привет, ";
Peremennaya2 = "мир! ";
message (Peremennaya1.. Peremennaya2);
end
То, программа выдаст одно выражение, объединив две строки.
В эту конструкцию можно включать и числа.
То, есть вариант:
Peremennaya1 = "Привет, ";
Peremennaya2 = 99;
message (Peremennaya1.. Peremennaya2);
Выдаст фразу: «Привет, 99».
Пожалуй, по переменным это все. В LUA ни каких особых особенностей нет по сравнению с другими языками программирования.
2. Массивы
Как и во многих других языках программирования в LUA есть массивы. Но есть особенности. Если во многих языках программирования массив - это набор однотипных значений. То, в LUA в массиве могут храниться разные значения: первым элементом может быть число, вторым - строка, третьим - другой массив и т.д. Пример:
bumagi = {1,2,3,4,8,9,0};
Это набор цифр.
Можно определить массив со строками:
colors = {"green", "blue", "black"}.
Обратиться к значениям массива можно через индексы (порядковые места):
colors[0]; -- выдаст «green».
Также можно переписать это значение.
colors[0] = "yellow";
Помимо числовых индексов массивам можно задавать строковые индексы.
Например:
massiv = {}; -- задали пустой массив. Пока без значений.
massiv["first"] = 80;
massiv["second"] = 56;
То есть теперь к значениям массива можно обращаться по строковым индексам:
Посмотрите что выдадут следующие строки кода:
message(massiv["second"]);
message(massiv["first"]);
Также к элементу массива можно обратиться так:
massiv.first
Еще одна полезная команда, которую я использую в своих скриптах, пусть и не часто – это команда удаления элемента из массива.
Выглядит эта команда так:
table.remove (massiv, key)
То есть нужно указать название массива, из которого удаляется значение и индекс удаляемого элемента.
В целом, по массивам это все. Но, есть такой нюанс, что в массиве элементами массива могут быть другие массивы. И тут могут быть некоторые сложности. К сожалению, QUIK в качестве результатов ответов с сервера часто выдает достаточно сложные конструкции. Но, мы будем разбирать эти моменты.
3. Оператор (if…else)
Стандартная конструкция. В LUA она имеет следующий синтаксис:
If (условие) then
(операции, выполняющиеся при выполнении условия)
end
Или более расширенный вариант:
If (условие) then
(операции, выполняющиеся при выполнении условия)
else
(операции, выполняющиеся при невыполнении условия)
end
Для понимания давайте разберем такой простой код:
Peremennaya = 5; -- присваиваем переменной значение 5
If (Peremennaya == 5) then
message ("Переменная равна 5"); --вывод сообщения, если переменная равна 5
else
message ("Переменная не равна 5");--вывод сообщения, если переменная не равна 5
end
Думаю, что тут все ясно. Единственно что нужно отметить: как Вы, наверняка, уже заметили оператор сравнения обозначается как двойной символ равно (==).
Также можно применять: не равно (~=)
меньше (<)
больше (>).
Есть, конечно и «больше или равно», и «меньше или равно», но я реально такое не применял.
Еще один момент, который желательно понимать, это логические операции.
То есть в конструкции (if … else) в качестве условия можно писать достаточно сложные условия, применяя логическое И (and) и логическое ИЛИ(or).
Если применяется логическое И, то общее условие выполняется, если выполняются оба условия. При использовании логического ИЛИ условие выполняется если хотя бы одно условие выполняется.
Давайте рассмотрим примеры.
function main()
Peremennaya1 = 5;
Peremennaya2 = 9;
if ((Peremennaya1 == 5) and (Peremennaya2 == 9)) then
message("Обе переменные равны нужным значениям"); -- это сообщение будет выдано только, если обе переменные равны установленным значениям.
else
message("Одна из переменных не равна нужным значениям");
end;
end
Попробуйте поменять в коде в первых сроках значения переменных и посмотрите что будет выдавать код.
Теперь такой вариант:
Peremennaya1 = 5;
Peremennaya2 = 9;
If ((Peremennaya1 == 5) or (Peremennaya2 == 11)) then
message("одна из переменных равна нужному значению"); -- это сообщение будет выдано только, если одна из переменных равна установленному значению в первых строках.
else
message("Обе переменные не равны установленным значениям");
end;
По поводу оператора (if… else) нужно указать еще один момент. В LUA существует такое понятие как «Пусто». Обозначается как «nil». С точки зрения оператора (if… else) это равно «Ложь». Часто после получения данных от сервера (например, о количестве акций в портфеле) может прийти пустое значение. И для его дальнейшей обработки нужно выполнять проверку.
Например, мы запросили данные по бумаге и поместили их в переменную stock (как делать такие запросы мы рассмотрим позднее). Для дальнейшей работы нам нужно сделать проверку на наличие данных в переменной stock. Это можно сделать так:
if (stock) then
(операции, выполняющиеся при наличии данных)
else
(операции, выполняющиеся при отсутствии данных)
end
Пожалуй, на этом закончим первую часть по основным командам и конструкциям LUA.
Продолжение следует.
Если Вы хотели бы получить программную реализацию своей торговой идеи, но понимаете, что сами не готовы облачить идею в код, то можете обратиться ко мне. Мой адрес в телеграм: https://t.me/Nikolai_Antonov
Моя электронная почта: nantonov@mail.ru
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
📃 Краткое содержание данного канала.
➖➖➖➖➖➖➖➖➖➖➖➖➖
Landingcentr.ru - разработка сайтов для малого и среднего бизнеса.
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆