Управляющая конструкция "if - then - elseif - then - else - end" в QLua (lua)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 4, среднее: 5,00 из 5)
Загрузка...

Qlua-основы
Конструкция оператора if в QLua может содержать следующие элементы:
   if (если),
   then (то),
   else (иначе),
   elseif (иначе если),
   end (конец).
Несколько примеров использования:

-- ЕСЛИ значение переменной A больше 1, ТО
if A > 1 then
   B = 10; -- присваиваем переменной B значение 10
end; -- КОНЕЦ
 
-- ЕСЛИ значение переменной A больше 1, ТО
if A > 1 then
   B = 10; -- присваиваем переменной B значение 10
else -- ИНАЧЕ
   B = 5; -- присваиваем переменной B значение 5
end; -- КОНЕЦ
 
-- ЕСЛИ значение переменной A больше 1, ТО
if A > 1 then
   B = 10; -- присваиваем переменной B значение 10
elseif A == 1 then -- ИНАЧЕ ЕСЛИ A равно 1, ТО
   B = 5; -- присваиваем переменной B значение 5
else -- ИНАЧЕ
   B = 1; -- присваиваем переменной B значение 1
end; -- КОНЕЦ
 
-- ЕСЛИ значение переменной A больше 1, ТО
if A > 1 then
   B = 10; -- присваиваем переменной B значение 10
elseif A == 1 then -- ИНАЧЕ ЕСЛИ A равно 1, ТО
   B = 5; -- присваиваем переменной B значение 5
elseif A < 1 then -- ИНАЧЕ ЕСЛИ A меньше 1, ТО
   B = 3; -- присваиваем переменной B значение 3
else -- ИНАЧЕ
   B = 1; -- присваиваем переменной B значение 1
end; -- КОНЕЦ

При помощи оператора elseif можно вкладывать друг в друга бесконечное количество условий.

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Управляющая конструкция "if - then - elseif - then - else - end" в QLua (lua): 14 комментариев

  1. Здравствуйте! Подскажите, пожалуйста, как в lua описать многосоставные логические конструкции, например как в C++: if((a>b && by || y==z)) - выражение истинно если а больше б и б меньше с, либо выражение истинно если х больше у или у равен z.

        1. Я уже Вам ответил, знак # возвращает длину массива, если Вы напишите строку if Array5Min > 5 then, то Вам выдаст ошибку, потому что Array5Min это массив (table), а 5 - число, а таблицу с числом сравнивать нельзя.

          1
          2
          3
          4
          5
          
          Array5Min = {}
          Array5Min[1] = 10
          Array5Min[2] = 20
          Array5Min[3] = 30
          message('Длина массива Array5Min = '..#Array5Min) -- Выведет "Длина массива Array5Min = 3"
          1. 1
            2
            3
            4
            5
            6
            7
            
            --Условие 1, для свечей типа "пин-бар"
            if  (p_aa > p_bb
            --Условие 2, для остальных свечей, которые по случайности прошли первое условие	
            and (math.abs(p_cc)) < p_dd
            --Условие 3, чтобы исключить свечи без теней, они не подходят в мат.модель условий выше
            and (p_nn~=0 or p_nnn~=0)) then 
            Trade('B',p_count-count,t[0].close+p_spread)

            Есть такая модель.
            Не могу разобраться как поставить антиусловия , поясняю:
            В условии 3 есть строчка 'and (p_nn~=0 or p_nnn~=0)) then ', надо чтобы если ХОТЬ одно из этих p ==0, то условие не выполнено, в данном же коде программа считает так - p_nn==0 допустим, но p_nnn~=0 (не равно) и все, думает условия выполнены.

            Подскажите если ли какие либо способы задать это именно так, условия исключения или антиусловия.
            Спасибо!