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
Разница в том, что одно — сборка бинарей либ вместе с интерпретатором (и большая часть — для luajit, интерпретатор в поставке — он же), а второе пакетный менеджер.
Dim
всем привет ищу криптоаналитиков
Dim
есть такие?
Maxim
всем привет ищу криптоаналитиков
http://bitmoney.capital это близко к способностям аналитика?
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
Snusmumriken
и как их тогда вызывать?
Смотри на практически любой чужой код, вкуривай что там происходит.
Dima
Смотри на практически любой чужой код, вкуривай что там происходит.
спасибо за ответ. Вынося local M={} в отдельную строку это понятно. А именно из самой таблицы, можно как-то обратиться к самой себе, что -то типа self.
Dima
что - то вроде. return { one = function() print(self:two()) end, two = function() return 10 end }
Snusmumriken
что - то вроде. return { one = function() print(self:two()) end, two = function() return 10 end }
Можно было БЫ, если бы ты первым аргументом функции, использующей self принимал, собственно, self, а потом вызвал бы её через двоеточие.
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
именно во время вызова.
Snusmumriken
А у доветочия и точки одинаковая симантика?
1. Семантика 2. Загугли и поэкспериментируй. Я писал про это статьи на хабру.
Snusmumriken
Двоеточие - работает как вызов функции из таблицы. Типа метод этой таблицы, а не просто функции, но и так можно.
Dima
Двоеточие - работает как вызов функции из таблицы. Типа метод этой таблицы, а не просто функции, но и так можно.
спасибо The colon is for implementing methods that pass self as the first parameter. So x:bar(3,4)should be the same as x.bar(x,3,4).
Dima
разбираться, входить в тонкости, и формулировать новые вопросы.
Snusmumriken
Соответственно при объявлении функции в таблице через двоеточие, туда автоматом прописывается первый аргумент self. function foo:bar() return self end print (foo.bar(10)) --> 10
Dima
Dima
можно скзатать что obj:boom(x) это syntax sugar для obj.boom(obj,x). красота.
Snusmumriken
Статью про метатаблицы прочитай. Там классы и наследования.
Dima
Snusmumriken
можно скзатать что obj:boom(x) это syntax sugar для obj.boom(obj,x). красота.
Потом привыкнешь к этому, и будешь в питонах-плюсах-жаваскриптах так же писать и постоянно исправляться
Dima
Потом привыкнешь к этому, и будешь в питонах-плюсах-жаваскриптах так же писать и постоянно исправляться
да syntax sugar это удобно, и сокращает работу. например в Ruby объектная модель из Small Talk и для того чтоб вызвать метод не надо ставить скобочки по этому рабоают констуркции array_chars.reverse.join и так в ES6 часто проскальзывает вызов метода без круглых скобок.
Dim
ни кто с питоном не работает?
Maxim
ни кто с питоном не работает?
то крипта, то питон, выкладывай карты что у тебя там ещё в рукавах ?
Dim
ну так одно же вытекает из другого!
Dim
сказали, что питон может помочь в расшифровке
vvzvlad
Я вот работаю, но что-то мне стремно признаваться
Dim
Я вот работаю, но что-то мне стремно признаваться
анализировать данные на нем умеешь?
Maxim
анализировать данные на нем умеешь?
да что же все вокруг до около, батюшка. давайте уже к делу
Dim
так я уже писал