Natalie
копала
1. отпадает, перед возвратам проверяла, что внутри возвращаемой переменной
2. тоже не: возле returna правильная таблица
т.е. она не только перед возвратом не nil - если её взять и прям присвоить кому-то, то всё идет хорошо. Но если пытаться присвоить её как возвращаемое значение - вот тогда чето не так...
Natalie
ща кину) интересно же
Natalie
в папке вот он и луашный файлик, так что кину кусочками
Natalie
Natalie
не, я ни в коем случае не посягаю на кубовские мозги)
Наоборот, уповаю на них!
Просто моих не хватает пока на то, чтобы понять причины такого поведения
Natalie
ну вроде бы *l - построчно читает...
Natalie
чтобы потом не делить)
Natalie
а вот ты о чем)
Natalie
да, точно) ща уберу))
Natalie
да как так?!
Natalie
не покажешь, какая ошибка?
а то у меня все закончилось удачно
Natalie
да, сейчас как раз сижу удаляю их)
Natalie
а, эт я тоже убрала
забыла исправить на пасте
Natalie
спасибо)
Natalie
это жесть, на самом деле...
опечатка может украсть пару часов жизни у нескольких человек
Lucky
Я однажды хитрую индексацию ячеек лабиринта придумал и оценочную функцию, которая сразу говорила, есть путь между ячейками или нет
Lucky
вот буквально сразу
Lucky
как вы уже наверно догадались, индексация ячеек строила некое извращённое подобие графов
Lucky
а функция смотрела, принадлежат ли начальная и конечная точка одному графу
Snusmumriken
Ну сначала надо ещё найти ближайшие точки от концов путей до графов, тут пространственная индексация. Они же не совпадают в 99.9999% случаев.
Snusmumriken
Хотя в случае с ячейками — может быть немножко иначе, хм.
Evgeniy
Всем привет!
есть небольшой вопрос, как вставить NULL значение при использование luasql? luasql не имеет метода prepare, т.е. только execute.
если делать через string.format:
dbh:execute(string.format([[ UPDATE test.stat SET test = '%s']], var))
то получу ошибку string expected, got nil
p.s. знаю, что в lua-dbi есть prepare, но там другие заморочки с last_insert_id.
Snusmumriken
var or 'NULL'
Snusmumriken
Хм, кстати, мб что-то такое, NULL вроде загоняется без кавычек:
var = var and "'" .. var .. "'" or 'NULL'
dbh:execute("UPDATE test.stat SET test = " .. var)
Evgeniy
хм, сейчас попробую
Snusmumriken
Не забудь предварительно escape'нуть var, чтобы кто-то не смог впихнуть инъекцю.
Evgeniy
Да, помогло, спасибо.
что-то такой вариант я отмел изначачльно, так как думал, сделать preparmetn по аналогии с Lua-dbi
Snusmumriken
А ещё лучше, напиши функцию форматирования данных, типа:
function format(data)
local type = type(data)
if type == 'table' then
data = table.concat(data)
type = 'string'
end
if type == 'string' then
return "'" .. dbh:escape(data) .. "'"
end
if type == 'number' then
return tostring(data)
end
if type == 'boolean' then
return data and 'TRUE' or 'FALSE'
end
return 'NULL'
end
А потом такой:
dbh:execute('UPDATE test.stat SET test = ' .. format(var))
Evgeniy
Спасибо за совет)
Snusmumriken
У luasql есть метод
str = connection:escape(str), чтобы никто не мог тебе послать строку типа:
"bla-bla'; drop table students;"
Snusmumriken
Dima
Dima
Можете сформулировать чем отличатеся LuaPower и LuaRocks они конкуренты?
Snusmumriken
Snusmumriken
Разница в том, что одно — сборка бинарей либ вместе с интерпретатором (и большая часть — для luajit, интерпретатор в поставке — он же), а второе пакетный менеджер.
Dima
Dim
всем привет
ищу криптоаналитиков
Dim
есть такие?
Snusmumriken
@Dimka_8383 хочет прорекламировать свой чатик с криптоаналитикой.
https://t.me/de_cry_pt
Dim
спасибо
Dima
Продолжаю разбираться с Lua на Codewars, решая простые kata. И разбираясь в вопросах возникюащих. Вот модуль возвращает return {x = function (a) y(a) end} как можно в таблицу засунуть y?
Dima
я написал функции отдельно.
Dima
Dima
вне таблицы, а в таблицу их положить можно?
Dima
и как их тогда вызывать?
Snusmumriken
1. Изучаем область видимости и ключевое слово local.
2. Работа с таблицами - так же как и обычно. Доступ к строковым ключам (даже если значениями там лежат функции) — через точку.
Snusmumriken
local M = {}
function M.lua(a, b)
-- M.lua = function(a, b)
return a .. " " .. (a * b) .. ' Lua'
end
print(M.lua(10, 20)) --> 10 200 Lua
return M
Dima
что - то вроде.
return {
one = function() print(self:two()) end,
two = function() return 10 end
}
Dima
Snusmumriken
return {
one = function(self)
print(self.two())
end,
two = function()
return 10
end
}
...
print(M:one()) -- или как ты её потом обзовёшь
Snusmumriken
Ну конечно никто не мешает тебе не пользоваться двоеточиями.
return {
one = function(t)
print(t.two())
end,
two = function()
return 10
end
}
...
print(M.one(M))
Это то же самое.
Dima
Dima
Dima
это синоимы. или есть нюанс
Dima
именно во время вызова.
Snusmumriken
Двоеточие - работает как вызов функции из таблицы. Типа метод этой таблицы, а не просто функции, но и так можно.
Dima
Dima
разбираться, входить в тонкости, и формулировать новые вопросы.
Snusmumriken
Соответственно при объявлении функции в таблице через двоеточие, туда автоматом прописывается первый аргумент self.
function foo:bar() return self end
print (foo.bar(10)) --> 10
Dima
Dima
Dima
можно скзатать что obj:boom(x) это syntax sugar для obj.boom(obj,x). красота.
Snusmumriken
Статью про метатаблицы прочитай. Там классы и наследования.
Dima
Dim
ни кто с питоном не работает?
Dim
ну так одно же вытекает из другого!
Dim
сказали, что питон может помочь в расшифровке
vvzvlad
Я вот работаю, но что-то мне стремно признаваться
Dim
Dim
так я уже писал