@ProLua

Страница 201 из 307
Group Butler [beta]
13.11.2017
02:30:38
Добро пожаловать в чат pro.lua, Aziz! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Добро пожаловать в чат pro.lua, Maxim! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Google
Snusmumriken
14.11.2017
04:08:02
всех приветствую =) Собственно из-за Defold'а к вам занесло. Профильного чатика не нашел
А я тут как раз думаю, как к defold'у прикручивать нативные либы. Там, конечно, есть что-то такое: > https://www.defold.com/manuals/extensions/ Но для этого надо пердолиться с сурцами, я хотел что-то проще, типа lib = require'library' -- в чистой lua, dll/so-либы можно реквайрить таким образом. Ну и такое тоже сойдёт.

Maxim
14.11.2017
07:57:34
Ребята, подскажите, есть чатик по defold? А если нет и нас много, то мб поднимем его

annelin
14.11.2017
12:14:15
кто-нибудь умеет нормально в регекспы?

юниксовые, не lua-шные

Snusmumriken
14.11.2017
12:52:05
юниксовые, не lua-шные
Ты имеешь ввиду PCRE? Дык там же всё то же что и в луашных, но \ вместо %, есть указание количества {a[, b]}, и всякие OR | а так - всё то же самое. Умеющий в одни регулярки умеет в другие.

annelin
14.11.2017
13:21:39
мне нужно заменить секцию в INI-файле. например: [A] key=value [B] key=value [C] key=value нужно заменить секцию A. как это грамотнее сделать?

inb4 распарсить ini-файл либой, удалить нужную секцию и перезаписать файл

fgntfg
14.11.2017
13:25:45
Найти в файле метку [A]. Начать удалять пока не наткнёшься на следующую метку или EOF

Snusmumriken
14.11.2017
13:26:51
Ммм. Ну, на луях - input = io.read(filename, 'rb') text = input:read('*all'); input:close() -- эта версия не удалит блок если он последний (( text = text:gsub('(%[SECTIONNAME%].-)%[', '') output = io.read(filename, 'wb') output:write(text); output:close() В юниксах - грепать похожим образом.

annelin
14.11.2017
13:27:53
ага, а если мы заменяем что-то в секции A — секция B сотрётся к чертям?

потому что матч будет до последней [, а последняя [ у нас в начале [C]

Google
Snusmumriken
14.11.2017
13:28:31
М? До первой попавшейся [

annelin
14.11.2017
13:28:58
а где это указано в регэкспе?

fgntfg
14.11.2017
13:29:01
@Snusmumriken не совсем правильно [ может быть частью строки

fgntfg
14.11.2017
13:29:15
может

я спеки читал

annelin
14.11.2017
13:29:21
если могло бы быть — проще распарсить Ini

Snusmumriken
14.11.2017
13:29:28
Там это возможно? Ну тогда \n%[ Ключи не могут быть в этой фигне.

annelin
14.11.2017
13:29:30
я тебе говорю про свой конфиг

fgntfg
14.11.2017
13:29:50
храни конфиг в lua table

Snusmumriken
14.11.2017
13:30:08
я тебе говорю про свой конфиг
У тебя парсер ini на луа есть?

annelin
14.11.2017
13:30:26
мне вообще однострочником на баше это всё желательно сделать )

если уж скриптом - то проще распарсить ini питоном/перлом

да и луя вроде умеет

fgntfg
14.11.2017
13:31:09
технически разницы между lua. python и perl нет никакой разницы

Snusmumriken
14.11.2017
13:31:13
Ну, просто я люблю тулзы типа парсеров, и решать проблемы скриптами (потому что вендузятник). На юниксах - греп, конкретно - не скажу, надо сделать инишку и потестить.

annelin
14.11.2017
13:31:35
perl -i -pe "s/\[sectionA\].*\[/\[sectionA\]\nOUR_CUSTOM_DATA\n\[/s" если делать так - он ищет наибольшее совпадение, а не до первой следущей [

Snusmumriken
14.11.2017
13:32:03
Мм. А как сделать чтобы поиск перестал быть жадным, знаешь?

annelin
14.11.2017
13:32:10
а вот не знаю

Google
Snusmumriken
14.11.2017
13:32:23
.- - не жадный поиск в луа, аналог - .*?. print( ('banana'):match('ba.*na') ) --> 'banana' print( ('banana'):match('ba.-na') ) --> 'bana'

annelin
14.11.2017
13:32:38
? вроде бы

но если регэксп взять в скобки и добавтиь после ? — тоже самое

о

вроде ок

?\]

вот так

Snusmumriken
14.11.2017
13:35:07
Балуйся с регекспами, они полезные.

fgntfg
14.11.2017
13:35:36
мне регепсы както помогли починить наш пром

annelin
14.11.2017
13:35:44
ненавижу регэкспы =)

fgntfg
14.11.2017
13:35:47
но, правда, в Oracle

регэкспы это очень мощная магия.

Vlad
14.11.2017
13:36:07
а что значения в таблицах с текстовыми ключами сортируються?

annelin
14.11.2017
13:36:30
единственная штука, которая меня раздражает в луе

fgntfg
14.11.2017
13:36:54
Почему?

просто ассоциативные массивы не имеют порядка

annelin
14.11.2017
13:38:06
потому что мне нужно, например, сгенерировать конфиг в табличку, а потом представить его в текстовом виде

а тот софт, который будет читать этот конфиг - восприимчив к порядку записей

дратути!

Google
fgntfg
14.11.2017
13:39:12
Так можно сортировать же. Емнп есть sort с колбеком. Я же не путаю языки?

annelin
14.11.2017
13:39:39
сортировать как?

мне нужно, чтобы в ассоциативном массиве записи были в том порядке, в котором я их добавил

в почти всех языках это так

ну или, в крайнем случае, чтобы была хоть какая-то логика при итерации через pairs()

а не доверять всё ёбаному рандому

fgntfg
14.11.2017
13:40:47
` local t = { [223]="asd", [23]="fgh", [543]="hjk", [7]="qwe" } local tkeys = {} —populate the table that holds the keys for k in pairs(t) do table.insert(tkeys, k) end —sort the keys table.sort(tkeys) — use the keys to retrieve the values in the sorted order for _, k in ipairs(tkeys) do print(k, t[k]) end `

pfpfpfplfp

annelin
14.11.2017
13:41:30
да, чёт типа того и приходится изобретать

fgntfg
14.11.2017
13:41:35
какой тут тег для кода?

annelin
14.11.2017
13:41:40
`

жопа

Snusmumriken
14.11.2017
13:41:59
Потому что для ускорения поиска в 100500 раз используются хеши. Для того чтобы держать порядок, можно или прицепить метатаблицу с проксей (на __index/__newindex и методом __pairs возвращающим ключи-значения-индекс, которая хранит в замыкании порядок), или типа такого: function add(tbl, key, v) tbl[key] = v tbl[#tbl + 1] = v end function remove(tbl, key, index) local removed_now local v = tbl[key] index = index or 1 for i = 1, #tbl do if removed_now then tbl[i] = tbl[i + 1] else if tbl[i] = v then tbl[i] = nil end removed_now = true end end end tbl[key] = nil end t = {} add(t, 'yoyo', 10) remove(y, 'yoyo')

fgntfg
14.11.2017
13:42:46
тут явно не о производительности речь

Snusmumriken
14.11.2017
13:43:08
Где именно? Да, для того чтобы в словаре был порядок - нужно где-то ДЕРЖАТЬ ЭТОТ ПОРЯДОК, что жрёт память и замедляет удаление, если удалять без индекса + ключа, а ещё тут проблемы с удалением ключей, ибо все остальные надо сдвигать назад.

Да. Там где нужен порядок - объективно не особо нужны словари. Инфа сотка. Лучше уж список типа: { {a = 10, b = 20}, {a = 20, b = 30}, } Если уж так нужны ключи. И порядок сохраняется )))

Daniel
14.11.2017
13:48:48


Я не знаю с чего начать

Помогите, пожалуйста.

Philipp
14.11.2017
13:49:24
Ты первую решить не можешь?))

Google
Daniel
14.11.2017
13:49:36
Первую решил

И третью решил

На втором застрял

annelin
14.11.2017
13:50:01
о, я такие лет 5 назад решал)

на олимпиадках по программированию))

Daniel
14.11.2017
13:50:18
(на Lua)

Philipp
14.11.2017
13:50:32
Проблема в том, что олимпиады Луа не принимают :с

Я так проебал последнюю

annelin
14.11.2017
13:50:44
я на сишечке писал

выебнулся тип

Philipp
14.11.2017
13:50:46
Задачи на Луа решил - на ++\Питон перенести времени не хватило

Daniel
14.11.2017
13:50:50
А мне что делать то?

annelin
14.11.2017
13:50:51
а меня не приняли :(

Philipp
14.11.2017
13:50:59
А мне что делать то?
Не спамить и ждать ответа?

Daniel
14.11.2017
13:50:59
У нас на луа....

annelin
14.11.2017
13:51:00
А мне что делать то?
мне за тебя это решить?

Philipp
14.11.2017
13:51:10
Я например собирался только тебе решение написать

Не код, а алгоритм

Принимаешь 5 целых чисел с помощью read, сортируешь, откидываешь наибольшее и наименьшее число

Остальные три складываешь

Страница 201 из 307