mva
а тут ещё метки впилили
mva
фу
mva
(кстати, к стыду признаться, не штудировал документацию на этот счёт, но, всё же, скажу) к тому же, неясно (лично мне, по крайней мере) как интерпретатору сказать что "вот тут метка заканчивается и дальше идёт глобальный, а не меточный код
Snusmumriken
а тут ещё метки впилили
Да ладно, метки можно использовать только на текущем уровне видимости.
Там есть набор ограничений чтобы ими не злоупотребляли, в общем.
mva
Snusmumriken
Snusmumriken
Есть более конкретные варианты, и тебя как раз сожрут велоцирапторы, не используй goto.
Snusmumriken
А у меня они дрессированные, поэтому ацтань ))
Snusmumriken
Ты стал бы испытывать проблемы при поддержке кода с continue?
Snusmumriken
Ну вот и помолчи.
Или у тебя краснотряпочная реакция на само слово? ))
Если так, то советую обратиться к психотерапевту, у них уже выработана методика лечения закоренелых линуксоидов которые "венда это омерзительно! Её постоянно надо переставлять, а пользователи - закоренелое быдло, которое даже не хочет иметь полного контроля над ОС!", макоюзеров - "фуу ну как можно пользоваться андроидом/вендой, это же омерзительно! А пользуясь маком я чувствую себя особенным!", и тех у кого распухают глаза при взгляде на определённые слова: "ихнее", "пошлите", "goto" и т.д.
Mikhail
при миграции на 5.1
Anonymous
Mikhail
mva
https://github.com/lua/lua/commit/bc3e02a1b7d65c908409549160f567fad14cd238
mva
посмотрите на эту редиску
mva
секьюрити, КАРЛ
Snusmumriken
Надо бы Фила посадить за код, в котором нет else (только if ... then goto ... end), нет циклов, нет объектов, нет функций. Только goto.
Правда, есть шанс что Фил просвятится, и начнёт писать на асме.
mva
кстати
mva
а "./?" же разворачивается в cwd?
mva
или в dirname($0)?
mva
(да, лень тестировать)
Snusmumriken
(да, лень тестировать)
Если пробовать открыть файлы типа io.open('./file.txt', 'wb') - они будут создаваться в директории пользователя (/usr под линём, %userprofile% - под вендой).
mva
ты уверен про /usr?
mva
может таки /home/$user?
Snusmumriken
Ну да
mva
ну ответ на это просто
mva
ты запускаешь интерпретатор находясь в этой директории
mva
если ты его запустишь находясь в /tmp, то файл откроется в /tmp
mva
это логично
Snusmumriken
Нене, под вендой оно будет открывать только и исключительно в userprofile. В линексах я не проверял, но должно быть схоже.
Сама по себе луа ничего не знает о путях.
mva
$ lua /tmp/a.lua
This is b.lua from CWD
mva
хех
mva
с таким-то подходом оно и вправду было СЕКЬЮРИТИ
mva
но тогда лучше было бы переделать интерпретацию на определение директории, где лежит запускаемый интерпретатором скрипт, и считать пути относительно него
mva
как это, собтвенно, и сделано у белых людей
Lucky
Anonymous
Snusmumriken
1.
local sm = save_money_for
if not self.can_spend_money and (sm < 2 or sm > 4) then
...
end
2.
local sm_not_ok = {[2] = true, [3] = true, [4] = true}
local sm = save_money_for or 0
if not self.can_spend_money and not sm_not_ok[sm] then
...
end
Snusmumriken
Второй вариант даёт более лёгкую конфигурацию.
Anonymous
ничем не проще моего способа
Anonymous
кстати, если есть переменная например
self.kek = 5
и условие
if (self.kek) оно сработает? То есть если проверить инт на трушность то если не 0 то он будет тру, а если 0 то фолс как во всех языках или в луа по-другому(может быть?)
Snusmumriken
Только nil и false возвращают false.
Snusmumriken
if var then ... - как бы проверка на существование.
Число [0] существует - значит оно тру.
Snusmumriken
И ящитаю, что это восхитительное поведение, потому что позволяет нормально писать дефолты с числами:
function foo(a, b)
a = a or 10
b = b or 20
return a + b
end
foo(0) --> 20, а не 30
Никаких лишних подводных камней.
Snusmumriken
Ну вот шо это такоэ?
(в последнем случае - "0")
mva
даю подсказку: math.max/math.min
Tadeusz
Tadeusz
это ж не 0 || 30
Tadeusz
ты не видел "1" + 1 ?
Ilya
Все офигенно и читаемо, не надо ничего упрощать и делать нечитабельным.
Ilya
"sm" всякие - это изврат
Ilya
Можно скобки убрать 😊
Snusmumriken
ты не видел "1" + 1 ?
Я как раз не удивлён.
Но это "я такой умный", и то, если буду активнее писать на JS - буду допускать такое по невнимательности.
Tadeusz
оно не прощает такое)
Snusmumriken
"sm" всякие - это изврат
Сокращения при активном использовании чего-то - это нормально.
Вот это вот:
function foo(obj)
local var = obj.very_long_variable_name
local a = obj.hash[var]
if var < a then ... end
if var > a then ... end
end
Это гораздо лучше чем:
function foo(obj)
local a = obj.hash[obj.very_long_variable_name]
if obj.very_long_variable_name < a then ... end
if obj.very_long_variable_name > a then ... end
end
Tadeusz
Tadeusz
Snusmumriken
Вот как раз снус даже замутил в венде "пайпы" через луа и redis, как раз чтобы в openresty на лету компилировать <coffee>-код в JS.
Snusmumriken
Типо,
local w = io.popen("pipe -n coffee_pipe_input", 'wb')
w:write("coffee_code"); w:close()
local r = io.popen("pipe -n coffee_pipe_output")
print(r:read()); r:close()
Ilya
Snusmumriken
Ну типо не рекомендуется писать строки >80 символов (или даже >74).
В консолях/телетайпах хреново читается.
Если пользуешься консольным гитом - смотреть изменения проблематичнее.
Anonymous
Вы о чём
Anonymous
Вы программисты штоле?
vitaly
это один из реальных подводных камней после других языков
Snusmumriken
Ты так часто использовал 0 как false в других языках?
vitaly
Anonymous
Посоны срочно хелп(маленький вопрос)
если в функции сделать return "hello world" а потом в другой где ее вызов проверить if(my_func) then оно будет тру?
Anonymous
или если даже написать if (my_func == true) что-то изменится?
Anonymous
ок, спс
Anonymous
hi there is a problem
Anonymous
Lua Base64 Encode
Anonymous
My problem has been resolved ، tnx
Anonymous
@LuaCodeBot
😐💋
mihacooper [МСК -2]
@LuaCodeBot
😐💋
Ohhh, man, this bot gives a root access to your server. Be careful
Anonymous
Anonymous
Solved
Anonymous
a=io.popen('cd && cd html && cat index.html'):read("*a")
print(a)
Anonymous
How about
Anonymous