Арифметические операции, операции сравнения и логические операции в QLua (lua)

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

Qlua-основыАрифметические операции:

-- "+"   сложение
A = 2 + 3; -- в переменной A число 5
 
-- "-"   вычитание
A = 5 - 2; -- в переменной A число 3
 
-- "*"   умножение
A = 2 * 3; -- в переменной A число 6
 
-- "/"   деление
A = 6 / 3; -- в переменной A число 2
 
-- "^"   возведение в степень
A = 2 ^ 3; -- в переменной A число 8
 
-- "%"   остаток от деления
A = 5 % 2; -- в переменной A число 1
 
-- ".."  конкатенация (склеивание строк)
s = "lua";
A = "quik"..s.."csharp.ru"; -- в переменной A строка "quikluacsharp.ru"


Операции сравнения:

-- В чистом виде сравнивать имеет смысл строки со строками, числа с числами,
-- потому что выражение "5" == 5 вернет ЛОЖЬ(false),
-- чтобы сравнивать строки с числами, нужно привести сравниваемые элементы к одному типу
 
-- "<"   меньше
2 < 3 -- вернет true
 
-- "<="  меньше, или равно
2 <= 3 -- вернет true
2 <= 2 -- вернет true
 
-- ">"   больше
3 > 2 -- вернет true
 
-- ">="  больше, или равно
3 >= 2 -- вернет true
3 >= 3 -- вернет true
 
-- "=="  равно
2 == 2 -- вернет true
 
-- "~="  не равно
2 ~= 3 -- вернет true

Логические операции:

-- Логические операции возвращают в качестве результата false, или true,
-- ложью считаются только значения false, или nil, все остальные значения считаются истинными (true)
 
-- "and" логическое И вернет true, только если оба сравниваемых аргумента true
5 and 3        -- вернет ИСТИНУ(true), потому что оба аргумента числа, а числа не могут быть false, или nil
5 and (3 == 2) -- вернет ЛОЖЬ(false), потому что второй аргумент false
 
-- "or"  логическое ИЛИ вернет true, если хотя бы один из сравниваемых аргументов true
5 or (3 == 2)  -- вернет ИСТИНУ(true)
 
-- "not" логическое НЕ вернет истину, если один из аргументов false, а другой true (порядок не важен)
5 not (3 == 2)  -- вернет ИСТИНУ(true) "ИСТИННО высказывание: ИСТИНА не ЛОЖЬ"

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

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

Арифметические операции, операции сравнения и логические операции в QLua (lua): 23 комментария

  1. Здравствуйте, помогите пожалуйста разобраться в чем проблема, не срабатывает сравнение в луа
    Вот такой код:
    local yes = 0
    local gbo = 0
    if buy_orders[key].price == myBid then yes = 1 end
    if good_buy_order ~= nil then gbo = 1 end
    message('bop='..buy_orders[key].price..type(buy_orders[key].price)..' mBid='..myBid..type(myBid)..' yes='..yes..' gbo='..gbo)
    В месседжах вот такое:
    bop=742.3number mBid=742.1number yes=0 gbo=0
    и типы одинаковы и занчения , почему yes=0 ?

      1. Здравствуйте! Попробуйте применить вот эту функцию, она округляет переданное число до указанного количества знаков после запятой:

        1
        2
        3
        4
        
        math_round = function(num, idp)
          local mult = 10^(idp or 0)
          return math.floor(num * mult + 0.5) / mult
        end

        вот так:

        1
        
        if math_round(buy_orders[key].price, 2) == math_round(myBid, 2) then yes = 1 end

        В Луа есть такая проблема, что она может добавить к числу единичку, например, десятым знаком после запятой, т.е. куча нулей и в конце единичка.

          1. Здравствуйте! 10 в степени idp, или в степени 0, если функция вызывается без второго параметра, т.е. получается 10 ^ 0 = 1. В результате, переданное число округляется до целого. Т.е. выражение (idp or 0) вернет 0, если idp == nil, или вернет idp, если в idp есть какое-то значение.

            1. Спасибо Дмитрий, что отвечаете.
              Правильно ли я понимаю, что
              А = nil or 3 or 2
              будет равно 3?
              а в
              A =func1() or func2()
              во вторую функцию даже не заглянет, если func1() не равно ЛОЖЬ или nil ?

              1. Всегда пожалуйста! В первом случае да, A будет равно 3, во втором случае А будет присвоен результат, который возвращает функция func1, если она не возвращает никакого результата, то А будет равна nil, func2 вообще никогда не вызовется.

  2. Добрый день, подскажите пожалуйста,
    с помощью какой функции можно выполнить арифметические операции и операции сравнения для определенных ячеек уже созданной lua-таблицы?
    Нужно ли сначала задавать идентификаторы этих ячеек? а потом уже выполнять требуемые операции
    Если да, то опять же с помощью чего?

    Заранее благодарю за ответ.

  3. Интересно, каким образом выглядит аналогичная операции -- ".." конкатенация (склеивание ячеек столбца)?Если,конечно, такая операция есть в QLUA.Спасибо.

  4. Добрый день.Возник вопрос, можно ли складывать(вычитать) не переменные, а значения ячеек? Если можно,то можете привести какой-нибудь простой пример? Спасибо.

      1. Добрый день!

        Вам поможет GetCell
        Функция возвращает таблицу, содержащую данные из ячейки в строке с ключом «key», кодом колонки «code» в таблице «t_id».
        Формат вызова:
        TABLE GetCell(NUMBER t_id, NUMBER key, NUMBER code)
        Параметры таблицы:
        image – строковое представление значения в ячейке,
        value – числовое значение ячейки.
        Если входные параметры были заданы ошибочно, то возвращается «nil».

        Из файла qlua.chm "Функции для работы с таблицами Рабочего места QUIK"