if condition then
s = "on"
else
s = "off"
end
s = condition ? "on" : "off"
Выход прост — к нам придут на помощь логические операторы or и and. В Lua для них выполняется следующее:
- оператор and возвращает первое ложное значение среди сових операндов; если оба операнда истинны, возвращается последний из них
- оператор or возвращает первое истинное значение среди своих операндов; если оба операнда ложны, возвращается последний из них
s = condition and "on" or "off"
Если же уcловие condition ложно, то оператор and возвращает ложь, и оператор or, получив ложь в качестве первого операнда, возвращает значение второго ("off").
Таким образом, в результате махинаций с логическими операторами мы получили тернарный оператор в Lua!
Аккуратнее с этими вещами.
ОтветитьУдалитьa = true
b = false — or nil
c = «oops»
s = a and b or c
print(s) –> oops
Интересное замечание, спасибо. Действительно, параметры должны быть не ложными.
ОтветитьУдалитьничего интересного — автор по всей видимости плохо прочитал, предоставленное выше описание работы данных операторов. результат приведённый им абсолютно ожидаем и верен
Удалить