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