однострочное условие

Lance_Sterling

Известный
Автор темы
1,001
357
Версия MoonLoader
.026-beta
кароче есть условия в луа, типо прямо в переменных без if, else, это просто. представим шо у меня есть переменная chlen и она равна true или просто не равна nil, то можно использовать прямо в аргументах функций типо (chlen and 'членик есть'--[[если chlen не равняется nil или равняется true]] or 'нема членика :('--[[если условие равно nil или false]])

так вот можно туда допихать elseif ? как это делается если можно?
 
Решение
да прям таких терминов я не знаю, но это пиздец как удобно, у меня есть кароче вычисление игрока с какого он устройства, с пк или с тф, это прямо в нике написано и в sampGetPlayerNickname там все видно, и если он с тф то будет [M] аналогично если с ПК то [PC], да мне просто лень сделать нормальное условие, но согласись это же удобно, кароче у меня вот как(примерно): platform == '[M]' and 'мобильный игрок' or 'ПК игрок', но сервер иногда НЕ ПИШЕТ платформу то есть пишется только ник без [PC]/[M] и тогда уже было бы не плохо вывести ошибку о том что платформу определить не удалось, что можно поделать?
Lua:
local function platform(nickname)
    local p = nickname:match('^(%[%S+%])') -- предположительно, тег в начале ника
    return p...

Lance_Sterling

Известный
Автор темы
1,001
357
Ты навел пример тернарного оператора: var and "ON or "OFF"
Куда ты хочешь допихать elseif?
да прям таких терминов я не знаю, но это пиздец как удобно, у меня есть кароче вычисление игрока с какого он устройства, с пк или с тф, это прямо в нике написано и в sampGetPlayerNickname там все видно, и если он с тф то будет [M] аналогично если с ПК то [PC], да мне просто лень сделать нормальное условие, но согласись это же удобно, кароче у меня вот как(примерно): platform == '[M]' and 'мобильный игрок' or 'ПК игрок', но сервер иногда НЕ ПИШЕТ платформу то есть пишется только ник без [PC]/[M] и тогда уже было бы не плохо вывести ошибку о том что платформу определить не удалось, что можно поделать?
 

imring

Ride the Lightning
Всефорумный модератор
2,365
2,561
да прям таких терминов я не знаю, но это пиздец как удобно, у меня есть кароче вычисление игрока с какого он устройства, с пк или с тф, это прямо в нике написано и в sampGetPlayerNickname там все видно, и если он с тф то будет [M] аналогично если с ПК то [PC], да мне просто лень сделать нормальное условие, но согласись это же удобно, кароче у меня вот как(примерно): platform == '[M]' and 'мобильный игрок' or 'ПК игрок', но сервер иногда НЕ ПИШЕТ платформу то есть пишется только ник без [PC]/[M] и тогда уже было бы не плохо вывести ошибку о том что платформу определить не удалось, что можно поделать?
Lua:
local function platform(nickname)
    local p = nickname:match('^(%[%S+%])') -- предположительно, тег в начале ника
    return p == '[M]' and 'mobile player'
        or p == '[PC]' and 'PC player'
        or 'unknown'
end

print(platform('[M] Test_Test')) -- mobile player
print(platform('[PC] Test_Test')) -- PC player
print(platform('Test_Test')) -- unknown

можно сделать через таблицу с тегами-ключами:
Lua:
local platforms = {
    ['[M]']  = 'mobile player',
    ['[PC]'] = 'PC player'
}
local function platform(nickname)
    local p = nickname:match('^(%[%S+%])') -- предположительно, тег в начале ника
    return platforms[p] or 'unknown'
end

print(platform('[M] Test_Test')) -- mobile player
print(platform('[PC] Test_Test')) -- PC player
print(platform('Test_Test')) -- unknown