ShadoWalkeR
У меня идея такая что если файла нет. то просто продолжить выполнение - я чуть выше накатываю шаблонную таблицу, в а файле с имененм ключа должны быть уже индивидуальные особенности
Snusmumriken
https://studio.zerobrane.com/doc-lua-debugging
Snusmumriken
У меня идея такая что если файла нет. то просто продолжить выполнение - я чуть выше накатываю шаблонную таблицу, в а файле с имененм ключа должны быть уже индивидуальные особенности
Через pcall/xpcall дёргай. local function safeDofile(file) local function errorprinter(str, lvl) return str..'\n Traceback: '..debug.traceback(lvl or 1) end -- в ранних версиях луа нельзя передавать -- аргументы в xpcall local function df() return dofile(file) end local res = { xpcall(df, errorprinter) } if res[1] then return -- пропускаем первый аргумент успешности select(2, unpack(res)) end return nil, res[2] -- нил и ошибка end
Snusmumriken
Roman
можно открыть файл на чтение, если не нил, то прочитать и loadstring сделать
Roman
@Snusmumriken в js такая фигня есть, что код с try catch не jit компайлится и советуют такое на более мелкие функции разносить, как в lua с этим не знаешь?
Snusmumriken
У luajit компайлится всё что достаточно разогрето. Только тут на трассу не небирается, несколько десятков тысяч раз надо вызвать код с pcall/xpcall чтобы скомпилилось.
Roman
нашел табличку, все хорошо с этим
ShadoWalkeR
Спасибо за совет - поиграюсь с pcall/xpcall
Roman
http://wiki.luajit.org/NYI вот тут таблица есть, dofile вообще never compile
Snusmumriken
Спасибо за совет - поиграюсь с pcall/xpcall
Да я тебе уже готовую фигню выслал ))
ShadoWalkeR
Я с ними не работал - чтобы разобраться лучше самому написать)
Snusmumriken
http://wiki.luajit.org/NYI вот тут таблица есть, dofile вообще never compile
Ну блин, код из dofile может быть скомпилен. Допустим, ты сделал dofile на штуку которая выдаёт набор функций, а потом много дёргал эти функции. Трасса скомпилится.
Snusmumriken
Про трассировку можно глянуть тут, 19 минута: https://www.youtube.com/watch?v=9oVZObf2udU
Anonymous
эта ссылка вроде появлялась уже в этом чате
Anonymous
это твой знакомый?
Snusmumriken
Нет, это просто хороший доклад. Грех его не показать к месту.
Anonymous
да, я просто поинтересовался
Snusmumriken
Я же не ГРЕШНИК, а? Или ты думаешь ПО ДРУГОМУ? ))
Anonymous
грешник в таком контексе звучит как терпила или чепушила или любое другое ругательство с зоны
Anonymous
тем временем в браузере микрософт Эдж
Anonymous
Sergey
может кто подсказать пытаюсь распарсить XML не могу добавться до блока СЛОВА
Sergey
https://play.golang.org/p/gxWW9wRah0l
Anonymous
move_to_next_attribute
Anonymous
это итерирует на следующий атрибут
Anonymous
а тебе нужен узел (Node)
Anonymous
я так думаю
Particle Booster
Объясните, плз, почему разные последовательности получаются при выводе таблицы у этих вариантов? тут, setAssay через table.insert добавляет элементы и у него, есдинственного, на выводе Assay правильная последовательность Assay = lib_probability.setAssay({[2] = 5, [3] = 10, [4] = 1}) Assay = {["2"] = 5, ["3"] = 10, ["4"] = 1} Assay = {[2] = 5, [3] = 10, [4] = 1}
Sergey
а тебе нужен узел (Node)
local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then io.write(("%s%s:"):format(leadingws, r:name())) while (r:move_to_next_node()) do io.write((' %s=%q'):format(r:name(), r:value())) end io.write('\n') end end
Sergey
так ошибка
Sergey
lua: test_yandex.lua:69: attempt to call method 'move_to_next_node' (a nil value) stack traceback: test_yandex.lua:69: in main chunk [C]:
Anonymous
я не знаю есть ли такая функция
Anonymous
надо смотреть документацию xmlreader
Sergey
а я понял спасибо посмотрю
Particle Booster
table.insert делает массив, а {[2] = 5, [3] = 10, [4] = 1} это типа хеш
а без инсерта не массив? То, что я заключаю в скобки {} массивом не является?
Roman
{1, 2, 3} так массив
Roman
https://learnxinyminutes.com/docs/lua/
Particle Booster
{1, 2, 3} так массив
а нет способа создать массив, без инсерта, с указанием имен ключей?
Particle Booster
угу, спасибо, только у меня не доступен сайт =(
Roman
а нет способа создать массив, без инсерта, с указанием имен ключей?
https://learnxinyminutes.com/docs/lua/ нужно немножко хоть читать о языке, прежде чем использовать
Roman
роскомнадзор?
Particle Booster
нет
Particle Booster
ничё не пишет, пишет что каннт риач
Roman
кароч есть такой умный человек Роберту Иерусалимски он подумал: вот в других языках есть массивы и хеши а чтобы сделать самый няшный язык, нужно выкинуть все лишнее по этому таблица: если есть первый элемент - значит массив и может быть хеш, если нет - хеш и дырки среди эелементов это признак что массив закончился
Particle Booster
ясно, благодарю!
Snusmumriken
Держите массивы без дырок, используйте table.insert/table.remove.
Particle Booster
мне как раз дырявый ннада
Snusmumriken
Зачем?
Snusmumriken
Если тебе действительно нужны дырявые массивы - ты скорее всего делаешь что-то не то.
Particle Booster
для определения loaded dice
Particle Booster
то
Snusmumriken
Конкретно.
Particle Booster
для определения loaded dice
Snusmumriken
Конкретно.
Particle Booster
эмитировать кость со смещенным центром
Snusmumriken
Код приведи, обрамлённый тремя "`" с обеих сторон.
Snusmumriken
В каком смысле, и зачем тут таблицы, если "кость со смещённым центром" - это, как правило, функция?
Particle Booster
мне нужна возможность задавать вероятности для выпадения конкретных значений
Snusmumriken
Возьми какую-нибудь косинусоиду, наложи её на прямую, кидай рандом от 0 до 1 со смещением, прогоняй через функцию и умножай на 6 с округлением.
Particle Booster
{[2] = 5, [3] = 10, [4] = 1}
Roman
тогда можно остальным 0 поставить
Sergey
я не знаю есть ли такая функция
local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then io.write(("%s%s:"):format(leadingws, r:name(),r:next_node())) while (r:move_to_next_attribute()) do io.write((' %s=%q'):format(r:name(), r:value())) end io.write('\n') end end http://asbradbury.org/projects/lua-xmlreader/doc/ в либе не могу понять какая функция отвечает за чтение внутри блока ошибка выходит
Anonymous
reader:read() Moves the position of reader to the next node in the stream. Returns true if the node was read successfully, false if there are no more nodes to be read.
Anonymous
@sergey_voip
Particle Booster
игру пытаюсь сделать =/
Snusmumriken
Вот тебе метода смещения. Можешь заюзать кривые безье для функции.
Snusmumriken
ИЛИ есть ещё один способ который я напишу минут через десять-двадцать.
Snusmumriken
Настольную
Anonymous
О, снус, а чо за тема рисовать функции через кривые безье
Anonymous
это типа удобно?
Dadaskis
TextureManager = { textures = {}, loadTexture = function(fileName, textureName, isOpaque) print("loadTexture") print(fileName .. " | " .. textureName .. " | " .. isOpaque) local textureID = Engine.loadTexture(fileName, isOpaque) textures[textureName] = textureID print("loaded") end, getTexture = function(textureName) return textures[textureName] end } Почему textures[textureName] - ошибка? textureName = "Stone"
Snusmumriken
Particle Booster
Вот тебе метода смещения. Можешь заюзать кривые безье для функции.
чёт я и это не понимаю. Надо про кривые почитать.
Sergey
reader:read() Moves the position of reader to the next node in the stream. Returns true if the node was read successfully, false if there are no more nodes to be read.
local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then io.write(("%s%s:"):format(leadingws, r:name())) while (r:move_to_next_attribute()) do io.write((' %s=%q'):format(r:name(), r:value())) print("text",r:read("variant")) print("tttt",r:move_to_element("variant")) end io.write('\n') end end Сделал так но он мне возврашает только true
Anonymous
кто он?\
Anonymous
ты же сам сказал '''Можешь заюзать кривые безье для функции.'''