MT
fun a(var1, {}, var2)Size: a a a
MT
fun a(var1, {}, var2)S
S
fun a(var1, {}, var2)function foo(t)
local x = t.x or 0 --< дефолты
local y = t.y or 0
return x + y
end
print( foo{x = 10, y = 20} ) --> 30
print( foo{x = 1} ) --> 1
MT
function foo(t)
local x = t.x or 0 --< дефолты
local y = t.y or 0
return x + y
end
print( foo{x = 10, y = 20} ) --> 30
print( foo{x = 1} ) --> 1
{ ['screen'] = screen, ['x']=20, ['y']=10, ['w']=30 }S
['bla']? Там же нет спецсимволов, можно просто bla.S

S
MT
['bla']? Там же нет спецсимволов, можно просто bla.S
true — проверяй тип.S
local b = type(t.bool) == 'boolean' and b or true
Обычный or решит, что если передали false, то это фигня полная, и принудительно укажет true.S
S
AZ
S
vector<bool> это явно фигня для замены флагов. Ну, типа передача куда-то набора флагов для чего-нибудь, мол "если первый флаг выставлен в true — то делаем какую-то фигню". Нормальные люди передают char, где выставляет флаги битовыми сдвигами типа c = c << 1 | 1; для выставления второго бита в true, или v = c << 1 & 1; для чтения. А вектор (динамический массив) — это офигенный оверхед, проще уж тогда структурой фигачить.unordered_set<bool> — это вообще хтоническая фигня. Если у вектора мы могли определить, что значит тот или иной бул по соглашению в программе и порядковому номеру, то тут НЕ МОЖЕМ )))VM
VM
S
vector<bool> это всё ещё short, то есть для хранения одного бита расходуется целый байт. Если компилятор это не оптимизирует, он гипотетически может.S