@ProLua

Страница 50 из 307
0x9d8e
09.02.2017
20:08:09
А что он вернёт?

Tverd
09.02.2017
20:08:10
это будет быстрый tail call

вернет компоненту

0x9d8e
09.02.2017
20:08:40
компоненту?

Google
Tverd
09.02.2017
20:09:07
там ошибка у тебя, cmpnt где?

0x9d8e
09.02.2017
20:09:41
ой)

прочитал, вернёт собственно удалённый элемент

ну да, пригодится, если его перемещать, например

там ошибка у тебя, cmpnt где?
if(component.id == types[i].id)

Tverd
09.02.2017
20:11:07
и это, сначала сделай local types = self._.... , а потом уже if

ага, норм

0x9d8e
09.02.2017
20:13:46
Шесть обращений к полю таблицы дороже, чем три + создание локальной переменной?

Или это только для читаемости?

Tverd
09.02.2017
20:14:25
ну смотрится лучше однозначно ) а насчет скорости - не видел разницы, пробовал и так и так...

0x9d8e
09.02.2017
20:14:41
Ну ок, спасибо :)

Tverd
09.02.2017
20:15:03
пожалуйста ) люблю когда код красивый

0x9d8e
09.02.2017
20:18:54
Кстати, а нужна ли эта проверка перед циклом: if(types) then for i = 1, #types do ? А то вдруг #nil возвращает 0, и тогда можно этот иф убрать.

Google
Tverd
09.02.2017
20:19:51
дык проверь )

кстати, а как код писать? тэги?

0x9d8e
09.02.2017
20:21:10
Три `

в начале и в конце

Tverd
09.02.2017
20:21:27
print()

отлично, спасибо

0x9d8e
09.02.2017
20:21:51
Исключение кидает. Ну значит придётся с условием.

Tverd
09.02.2017
20:22:00
так вот тож )

Уважаемые, а кто нить рисует в чем нить сцены?

string.split = function(self, sep, result) if sep == nil then sep = ' ' end if result == nil then result = { } end local cur, idx = 1, #result + 1 local s1 = self:find(sep, cur, true) while s1 do result[idx] = self:sub(cur, s1 - 1) cur = s1 + 1 s1 = self:find(sep, cur, true) idx = idx + 1 end result[idx] = self:sub(cur) return result end

Подарок вам )

Alex Фэils?︙
10.02.2017
07:54:11
О, тут как раз кто-то искал такую вещь

yegorf1
10.02.2017
07:54:41
sep = sep or ' '

Tverd
10.02.2017
07:54:41
самая быстрая реализация, что сделал... Но разбивает по одному символу

Alex Фэils?︙
10.02.2017
07:54:56
Tverd
10.02.2017
07:55:04
sep = sep or ' '
согласен, это компиляция с мунскрипта

yegorf1
10.02.2017
07:55:25
А, понятно

Tverd
10.02.2017
07:55:56
можно подукрасить )

есть вариант и для нескольких символов

если надо кому

Google
Snusmumriken
10.02.2017
09:29:39
Хм. Всю дорогу использовал: for line in (str..delm):gmatch('(.-)'..delm) do ... end Тут конечно лишняя нагрузка на сборку мусора, и если сплитить огромные объемы - можно не добавлять к строке разделитель, обрабатывая последнее найденное отдельно. Но это самый короткий вариант. Так - да, find и sub работают реально быстро.

Tverd
10.02.2017
09:34:45
ну надо подумать над итератором... У меня есть недописаная либа с итераторами...

если огромные объемы, а нужно несколько элементов - итераторы смогут облегчить работу

Snusmumriken
10.02.2017
09:35:30
Можно объединить и эти два метода: strings.find возвращает два аргумента: начало и конец того что нашел, в результате - регулярка вида '(.-)'.. delimiter, после запихивания в string.find, выдает обе границы того что нашел. Можно смело sub'ать, отсекая с конца длину разделителя.

Tverd
10.02.2017
09:36:48
Попробуй, очень интересно

Snusmumriken
10.02.2017
09:37:47
Последний элемент тоже придется обрабатывать отдельно, но это не сложно, как раз если запоминать предыдущие значения.

Tverd
10.02.2017
09:38:02
да, щас скину мультипоиск

-- This split multiple separators string.split_multi = ( sep = ' ', result = {} ) => cur, idx = 1, #result + 1 patt = ('([^%s]+)')\format(sep) str = @match(patt, cur) while str result[idx] = str cur = cur + str\len() + 1 str = @match(patt, cur) idx += 1 result

Snusmumriken
10.02.2017
09:39:06
Это на мунскрипте?

Tverd
10.02.2017
09:39:11
я-я

Group Butler [beta]
10.02.2017
10:09:55
Добро пожаловать в чат pro.lua, Droff! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Snusmumriken
10.02.2017
12:02:10


Snusmumriken
10.02.2017
12:03:19
я-я
Как раз твой вариант адаптировал в сторону итератора, и добавил возможность произвольного размера разделителя.

Tverd
10.02.2017
12:03:40
а скинь код плиз, потестю

Snusmumriken
10.02.2017
12:03:53
function splitb(str, sep, result) sep = sep or ',' seplen = #sep result = result or {} local cur, i = 1, 0 local s1 = str:find(sep, cur, true) local lastflag = false return function() i = i + 1 if lastflag then return nil end if not s1 then lastflag = true; return i, str:sub(cur) end local part = str:sub(cur, s1 - 1) cur = s1 + seplen s1, s2 = str:find(sep, cur, true) return i, part end end

Tverd
10.02.2017
12:04:02
ага, гуд

Snusmumriken
10.02.2017
12:05:23
Флаг последнего участка - дабы корректно обрабатывать хвост. Можно было бы к оригинальной строке добавить разделитель в хвост, но если строка весит 3гб - это означает засирание памяти на 3гб, и тут же удаление из памяти тех же 3гб.

Tverd
10.02.2017
12:05:35
Не понял что идет в sep? стринг или тейбл?

Snusmumriken
10.02.2017
12:05:50
sep - разделитель, строка же.

separator

Google
Tverd
10.02.2017
12:05:59
#sep что даст?

Snusmumriken
10.02.2017
12:06:21
Длину разделителя. Разделитель '!! !!'? Его длина - пять символов.

Tverd
10.02.2017
12:06:23
sep:len()

Snusmumriken
10.02.2017
12:06:29
Да, так тоже можно.

Tverd
10.02.2017
12:06:42
о как... решетка дает длину строки? хм

Snusmumriken
10.02.2017
12:07:05
Решётка - дёргает метаметод __len у каждого объекта, который имеет мета-таблицу. Строки её имеют, там в __index - таблица string, и набор метаметодов для конкатенации и прочей фигни.

Tverd
10.02.2017
12:07:37
пипец... когда это появилось? я все пропустил ))))))))))))

Admin
ERROR: S client not available

Tverd
10.02.2017
12:08:43
result не используется у тебя

Snusmumriken
10.02.2017
12:08:48
А ещё, смотри, ты можешь сделать так: arr = setmatatable({}, {__index = table}) и после этого сразу: arr:insert(value) arr:remove(value) arr:sort() Строки используют аналогичный механизм.

Кстати да, не успел вычистить.

Tverd
10.02.2017
12:09:30
не, насчет метатаблиц я в курсах... я просто не помню что бы в 5.1 __len работал

Snusmumriken
10.02.2017
12:09:40
Хм. В Liajit - Точно работает. В чистой 5.1 ща гляну.

Tverd
10.02.2017
12:09:57
ну уже увидел,и правда

и в 5.1 тоже

Snusmumriken
10.02.2017
12:10:21


Tverd
10.02.2017
12:12:31
ага, s2 можно почистить... не используется

ну а так гуд... классно

a = setmetatable({}, {__len = function() return 10 end}) print(#a)

не, в 5.1 и луаджите не работает. В 5.2 - да

Google
Snusmumriken
10.02.2017
12:20:53
А, всё проще. Версия luajit 2.0.0-beta8 >From Lua 5.2: __len metamethod for tables (disabled by default).

Tverd
10.02.2017
12:25:50
ну да, у тебя какая версия?

LuaJIT 2.0.4 — Copyright (C) 2005-2015 Mike Pall. http://luajit.org/

моя

Snusmumriken
10.02.2017
12:38:31
Смотря где. love2d - 2.0.4, которая стабильная. Чистый luajit - 2.1.0-beta2, для всяких читов с микросервисами. И то и то использую x32-битные за ради совместимости.

Tverd
10.02.2017
12:40:32
понятно, надо свой значит собирать луаджит мне

Snusmumriken
10.02.2017
12:40:53
Зачем? Берёшь luapower и получаешь luajit под венду с большим набором либ, скомпиленных ровно под эту версию.

Tverd
10.02.2017
12:41:31
хотя пока не горит, длина особо не нужна, а если и нужна то len могу тупо написать...

Snusmumriken
10.02.2017
12:41:50
А, да пофигу, расслабься :3 Luajit по базе имеет неплохое количество расширений, по сравнению с ванильной 5.1

Tverd
10.02.2017
12:42:09
))))

А в чем пишешь? саблайм?

Snusmumriken
10.02.2017
12:50:47


Использовать через raw-ссылки, типа: Class = webrequire'http://pastebin.com/raw/K1yRyE1T' Правда, не работает по https, потому что сокеты не работают с https по умолчанию, нужны либы с криптографией, которые есть на линуксах но не на вендах. Саблайм слишком жирный и медленный, меня это несколько раздражает. И нет нескольких нужных мне фич (особенно - древовидное сворачивание кода, когда внутри свёрнутого блока есть другой свёрнутый блок). Их можно написать, но пока буду адаптировать - пройдёт слишком много времени.

yegorf1
10.02.2017
13:05:26
Задолбал хвастаться

"слишком жирный и медленный" Фига у тебя запросы

Snusmumriken
10.02.2017
13:55:58
Ну, эта фигня может кому-то понадобиться, для быстрого юзания скриптов. Нет, git-консоль на love2d я пока не сделал :< Запросы - какие есть, щито поделать, у меня синдром утёнка после np++, и синдром петуха после.. Оу, лишнее :3

Tverd
10.02.2017
15:59:02
Кстати, чем VS не устраивает?

Ixtis
10.02.2017
16:26:26
Да, мне VS тоже очень даже сипатичен

yegorf1
10.02.2017
17:01:12
Кстати, чем VS не устраивает?
Он считает, что она медленная и много весит и не стоит себя

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