Stas
Увидел.
Snusmumriken
Прошлое удалено.
LISP
Stas
Хочешь фулл?
Не-а. У меня есть кое-что получше. Скрин бага
Stas
У меня нет дампа. У меня есть скрин дампа....
LISP
Anatoliy
Всем привет, ребята возник вопрос помогите
Anatoliy
редко пользуюсь анонимными функциями и уже забыл когда в последний раз ими пользовался
Anatoliy
вроде бы все просто, но неполучается
Anatoliy
Вот такой код например:
Anatoliy
for i=1,10 do
x= (function(i)
return i+i
end)
print(x)
end
Anatoliy
вроде все правильно но результат выполнения:
Anatoliy
function: 0x0031b800
function: 0x0031ba88
function: 0x0031baf0
function: 0x0031bb58
function: 0x00311bf8
function: 0x00311c60
function: 0x00311cc8
function: 0x0031bfe0
function: 0x0031c048
function: 0x0031c0b0
Программа завершена за 0.06 секунд (pid: 624).
ㅤ
print(x(какое-то число))?
Anatoliy
т.е. возвращается не резьтат выполнения анонимной функции а ссылка на саму функцию
ㅤ
Не понятно, у тебя i в цикле и аргументом в функции.
Джюс
ㅤ
Джюс
Anatoliy
print(x(какое-то число))?
а да так сработало, все понял, короче x я присвоил функцию а не результат выполнения анонимной функции ))
Anatoliy
А как ей присвоить результат выполнения анонимной функции сразу?
ㅤ
Точно так же, как вызвал до этого.
Джюс
Джюс
(function() return 1 end)()
Джюс
оно сразу вернет 1
Anatoliy
Спасибо!
Snusmumriken
Спасибо!
Зачем тебе лямбдо-замыкания понадобились-то?
Snusmumriken
Это прост довольно специфичный инструмент, которым не стоит злоупотреблять, как это делают js-ники ))
Snusmumriken
Если сохранять в переменную, скобки вокруг функции не нужны.
А если её сразу и вызвать — то сама лямбда не нужна.
Джюс
Artem
всем привет, как можно конвертировать строку в lua в кодировку utf16?
Snusmumriken
iconv
Snusmumriken
Да, "строк lua" не существует, это просто байты которые ты интерпретируешь как тебе нужно, они уже имеют какую-то кодировку, в зависимости от содержимого файла который ты прочитал, или кодировки скрипта или ещё чего. Скажем так, кодировка есть у любого текста.
Snusmumriken
В третьих, зачем? Возможно есть более простые пути.
utf16 активно используется в виндовсе, но там есть и utf8-варианты функций, можно вызывать их и не париться с кодировками, используя стандартный utf8.
Artem
вообщем надо отправить по smpp протоколу, если отправлять в utf8 - приходять только символы типа пробела и пунктуации
Artem
при перекодировки в utf16 через iconv пришла вообще хрень
делал вот так:
local convert = iconv.new('UTF-16LE', 'UTF-8')
convert:iconv("текст сообщения")
Snusmumriken
Ну кстати можешь попробовать с utf8
https://ru.wikipedia.org/wiki/SMPP
Anatoliy
Artem
Hello, World! 🎄
anton
подскажите, порядок элементов при вызове pairs(...) неопределен?
Джюс
Джюс
но вообще да
Luсky
но это нестрашно
Luсky
ибо ваистену можно получить список ключей
Luсky
отсортировать их
Luсky
в нужном порядке
Luсky
идабудит так
Джюс
ipairs() есть же
Snusmumriken
подскажите, порядок элементов при вызове pairs(...) неопределен?
Если тебе нужен порядок — сохрани его где-нибудь.
Или используй итераторы типа:
function orderpairs(tbl, func)
local keys = {}
for k, v in pairs(tbl) do
keys[#keys + 1] = k
end
table.sort(keys, func) -- без функции будет алфавитный порядок
local i = 0
return function()
i = i + 1
local k = keys[i]
local v = tbl[k]
if k then return i, k, v end
end
end
А потом такой гордый:
for i, k, v in orderpairs(tbl) do
print(k, v)
end
Anonymous
Парни, подскажите пожалуйста такой момент
Anonymous
Имею матрицу вида:
subData[1].nums = {
{{877,884,1}},{{751,756,1}},{{757,762,1}},{{686,693,1}},{{1134,1139, 1}},{{445,450, 1}},{{885,890, 1}},{{765,770, 1}},{{771,776, 1}},{{891,896, 1},{903,904, 1},{1192,1192, 1}},{{897,902, 1}},{{510,517, 1}},{{1149,1157, 1}},{{790,797, 1}},{{798,803, 1},{908,910, 1},{915,917, 1}},{{920,944, 1}},{{945,962, 1}},{{963,972, 1}},{{973,982, 1}},{{983,992, 1}},{{993,1002, 1}},{{1003,1011, 1}},{{1012,1020, 1}},{{1021,1029, 1}},{{1030,1038, 1}}
}
Anonymous
Надо обойти ее циклом изменив цифры в зависимости от диапазона
Anonymous
Я сделал так
Anonymous
И как мне теперь записать в виде строки изменённую матрицу с сохранением синтаксиса?
Anonymous
Т.е. что бы была в формате :
subData[1].nums = {
{{877,884,1}},{{751,756,1}},{{757,762,1}} ..... Бла бла бла
Anonymous
Чёт туплю немного 🤷♂
Snusmumriken
serpent.dump(mymatrix)
https://github.com/pkulchenko/serpent
Luсky
обмажь код тройными апострофами, которые на клавише с буквой ё
Luсky
а лучше на сает для кода кидай типа пастебин или ещё сотни их
Snusmumriken
Anonymous
Спасибо большое, уже решил
Anonymous
Косо криво пока, но результат то что надо
Anonymous
Может кому пригодится, нашел на просторах инета.
Anonymous
function table.save(tbl,file)
-- recursively saves table data to a file, human-readable and indented
-- supported types: number, string, boolean, tables of the same
local f,err = io.open(file,"w")
if err then
print("Error: Unable to open file for writing: "..file.."\nDetails: "..err)
return
end
local indent = 1
-- local functions to make things easier
local function exportstring(s)
s=string.format("%q",s)
s=s:gsub("\\\n","\\n")
s=s:gsub("\r","")
s=s:gsub(string.char(26),""..string.char(26).."")
return s
end
local function serialize(o)
if type(o) == "number" then
f:write(o)
elseif type(o) == "boolean" then
if o then f:write("true") else f:write("false") end
elseif type(o) == "string" then
f:write(exportstring(o))
elseif type(o) == "table" then
f:write("{\n")
indent = indent + 1
local tab = ""
for i=1,indent do tab = tab .. " " end
for k,v in pairs(o) do
f:write(tab .. "[")
serialize(k)
f:write("] = ")
serialize(v)
f:write(",\n")
end
indent = indent - 1
tab = ""
for i=1,indent do tab = tab .. " " end
f:write(tab .. "}")
else
print("unable to serialzie data: " .. tostring(o))
f:write("nil, -- ***ERROR: unsupported data type!***")
end
end
-- here's the actual save process
f:write("return {\n")
for k,v in pairs(tbl) do
f:write(" [")
serialize(k)
f:write("] = ")
serialize(v)
f:write(",\n")
end
f:write("}")
f:close()
end
function table.load(file)
local data,err = loadfile(file)
if err then return nil,err else return data() end
end
Anonymous
Я для своих нужд немного правил, косо криво пока, но то что надо было срочно сделать, сделал, но в целом вот оригинал .
Hello, World! 🎄
@Snusmumriken
Eduard
обязан ли я после lua_call чистить стек (lua_pop)? или след вызов lua_call сам это сделает?
Eduard
в доке не вижу https://www.lua.org/manual/5.3/manual.html#lua_call
Snusmumriken
lua_call помнится очищает и функцию и аргументы, внутри должны оставаться только возвращённые аргументы из вызванной функции. То что было над функцией остаётся.
Eduard
Внутри? Где внутри?
Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрошу (если функция ничего не вернула, когда должна была, то положит NILы).
И вопрос такой: нужно ли мое стек от этих NILов чистить? Или я могу просто проверить, что если на стеке не то, что мне нужно (lua_isnumber, например), то просто забить?
Eduard
И следущий lua_call этой же функции все подчистит
Eduard