• Логические операторы

    Перенесена Статьи и видео ce lua логика обучалка
    1
    0 Голоса
    1 Сообщения
    766 Просмотры
    MasterGHM
    Существует три логических оператора: and, or, not. Те, кто уже знаком с языками программирования знают, как эти логические операторы работают. Например, A = true B = true if A and B then print('Условие "A and B" выполняется') end if A or B then print('Условие "A or B" выполняется') end B = false if not (B == A) then print('Условие "not (B == A)" выполняется') end Но, дальше интереснее. Все логические операторы считают false и nil ложными, а все остальное — истинными. Оператор "and" возвращает свой первый аргумент, если он ложен и в противном случае возвращается второй аргумент Оператор "or" возвращает свой первый аргумент, если он не равен false и в противном случае возвращается второй аргумент. Сходу можно запутаться, но с примерами станет понятнее print (4 and 5) --> "5". В этом примере '4" не ложный, а значит при операторе "and" вернется второй аргумент "5". print(0 and 13) --> "0". Аналогично print(false and 13) --> "false". В этом примере первый аргумент false(ложный), а значит при операторе and вернется "false". print(4 or 5) --> "4" В этом примере "4" не ложный, а значит при операторе "or" вернется уже первый аргумент "4". print(false or 5) --> "5" В этом примере "false" ложный, а значит при операторе "or" вернется уже первый аргумент "5". Если кто вспомнил, то в C# есть такой оператор "?" (условный) string result = 4 == 4 ? "равно" : "не равно"; // result будет равен true На Lua это эквивалентно local result = ( (4 == 5 and "равно") or "не равно") А если опустить все скобки, то local result = 4 < 5 and "равно" or "не равно". Скобки можно опустить, потому что "and" имеет выше приоритет чем "or." Или вот еще пример compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode' Вот такая интересная штука для ускоренного сравнения вместо конструкции if условие then -- код else -- код end Идем дальше. Полезной идиомой Lua является x = x or v что эквивалентно if not х then х = v end Т. е. x равен значению v, когда x ложное. Оператор "not" всегда возвращает true или false print(not nil) --> true print(not false) --> true print(not 0) --> false print(not not nil) --> false
  • Управление состояниями memory record

    Перенесена Статьи и видео ce aa ce memrec фишки
    1
    0 Голоса
    1 Сообщения
    165 Просмотры
    MasterGHM
    Перехватываем состояния у checkbox memory recrod (у записи в таблицы CE) и меняем состояние активации и деактивации по другим условиям {$lua} \-- прсто инфо memrec.OnActivate = function(record, before, currentstate) print("OnActivate"..(before and "Before " or "After ")..(currentstate and "true" or "false")) return true end \-- прсто инфо memrec.OnDeactivate = function(record, before, currentstate) print("OnDeactivate"..(before and "Before " or "After ")..(currentstate and "true" or "false")) return true end \-- подмена состояния function onMemRecPostExecute(memoryrecord, newState, succeeded) if memoryrecord == memrec and newState then print('Меня активировали, но я деактивируюсь сам') memrec.Active = false end end {$asm} [ENABLE] {$lua} print('Состояния сейчас '..(memrec.Active and "true" or "false")) print('Пишу в адрес [адрес..] ... (float)10000.0') {$asm} // написать свой адрес //[адрес..]: // dd (float)10000.0 // написать свой адрес //[адрес..]: // dd (float)10000.0 // написать свой адрес //[адрес..]: // dd (float)10000.0 [DISABLE]
  • Запущен форум celua.ru

    Новости
    1
    0 Голоса
    1 Сообщения
    171 Просмотры
    MasterGHM
    Запущен форум Добавлены новые категории. Добавлена тема о том, что можно писать на форуме.