Контент Nazgool - Страница 20 - AMK Team
Перейти к контенту

Nazgool

Жители
  • Число публикаций

    618
  • Регистрация

  • Последнее посещение

  • Дней в топе

    1
  • AMKoin

    37 [Подарить AMKoin]

Весь контент пользователя Nazgool

  1. Desertir Можно конечно и так, как ты указал. Главное знать ЧТО ИМЕННО нужно. Написание кода не допускает неоднозначности. Я специально дал пример с repeat (не for и не while), чтобы напомнить о "забытых" путях. Но главное даже не в стиле составления цикла. Я попытался показать несколько путей оптимизации "на лету": 1. Все привыкли перебирать таблицу сначала в конец. Метод "наоборот" позволяет пользоваться всего-лишь одной переменной(вместо двух у тебя) в которой как бы сохраняется(и вычисляется) сразу два значения. Вычисляется текущий индекс и сохраняется для цикла размер таблицы. 2. Цикл прерывается при первом же "неподходящем" значении (опять же в отличии от твоего варианта) 3. Создание функции позволяет использовать код в дальнейшем. Добавлено через 31 мин.: Вот тут я писал кой чего...
  2. Nazgool

    Скриптование

    Desertir, например :function IsAllNumber(t) local i=#t+1 repeat i=i-1 until type(t[i])~='number' return i==0 end if IsAllNumber(tbl) then ... end
  3. Поскольку, благодаря RvP, в Сталкере появилось новое пространство имён debug, то нужно воспользоваться случаем и извлечь из этого несколько простых, но достаточно полезных возможностей.
  4. FANAT Будет использовать файлы из dbe.
  5. *Shoker* Стандартный способ проверки "пуста ли таблица?" : local t={} if next(t) then -- не пуста ... -- или же if not next(t) then -- пуста
  6. Nazgool

    Скриптование

    Vano_Santuri Таблицу из строки сделать не сложно. Желательно знать из строки какого вида? Например : local t = {} local s = "word_1 word_2 word_3 word_4 word_5" for w in s:gmatch("[%w%_]+") do t[#t+1] = w end Только вот до сих пор не пойму что же именно тебе нужно? В теме "Lua..." у тебя были одни условия, тут несколько другие. Объясни подробнее.
  7. Длина строки ограничевается только оперативной памятью компа.
  8. Desertir 1. Верно. Возвратит именно такую строку. Для конкатенации всей таблицы аргументы 1 и #tbl указывать не обязательно. Достаточно написать : local str = table.concat(tbl,"_") 2. При помощи функции tonumber : local str = "1234.5678" local num = tonumber(str) 3. Старайся не использовать в именах переменных имена зарезервированных глобальных переменных. Переменная string является именем глобальной таблицы для работы со строками. Объявляя local string = ... ты затираешь эту таблицу в области видимости новой переменной string. Всё ничего, пока значением переменной с именем string является строка (как в твоём примере). Если будет другое значение, то такое затирание приведёт к ошибке.
  9. К сведению. (и ещё раз возвращаясь к вопросам о скорости выполнения). Хоть сам и говорил о правильном заполнении строгих числовых массивов посредством стандартной функции table.insert, но... Когда я уверен в структуре моего массива, т.е. в том что он не будет изменяться посредством иных, не предусмотренных методов, то заполнение такового (например таблицы t) с помощью конструкции : t[#t+1]=какое-то значение происходит процентов на 25 быстрее чем table.insert
  10. Nazgool

    Stalker Soundtrack от Mooze

    А почему только Mooze? Это есть у всех. Музыки жанра dark ambient достаточно много. Ну например : Dahlia's Tear Neon Lotus Staruha Mha Northaunt Galerie Schallschutz ... И ещё много других.
  11. Качай и подключай. А дальше нужны только знания lua http://rghost.ru/25213001 Может есть более новая версия? На это уже сам RvP ответит.
  12. Whisper Всё это есть в новых библиотеках от RvP. И io для записи чтения, и os, и require для подключения любых, необходимых тебе библиотек. --------------------------------------- P.S. Пока писал, RvP уже ответил. Сорри.
  13. Первое слово наверное лучше искать так : return str:match('%S+') match сам по себе уже ищет первое вхождение %S исключает пробелы + укажет на первый "не пробел" и максимальное продолжение "не пробелов", т.е. на первое слово
  14. Не я автор. Поделиться не позволяют морально-этические. Как только "хозяин" решит, то сам и выложит. Сорри. Ну так а какой глубокий смысл тогда был об этом сообщать? Добавлено через 34 мин.: Какой смысл? Были сомнения по поводу нужности этой работы. Видим что нужно.
  15. Один хороший товарищ уже всё подключил к ТЧ. Luа в полном составе и работает. Сейчас тестируем. Только вот не стоит забывать, что функции dеbug,* изначально работают значительно медленнее стандартных. Даже JIТ особо не поможет.
  16. Дружище, чтобы знать что именно интересует людей, от них требуется как минимум озвучить свой интерес. Например мне в ЛС задают вопросы, и я прошу задавать их в этом топике. Но то ли стесняются, то ли ...? Не знаю. Если бы была способность предугадывать желания, то я сменил бы профессию :-)
  17. Из меня писатель не лучший чем, скажем, программист. :-( Когда начинал описание, думал упомянуть и туллбар. Пока дошёл - забыл. Все описания, что я пишу и хочу написать, основаны на собранных по крохам информации из НЕТ-а и собственных исследованиях. Поэтому никакой гарантии в плане абсолютной достоверности и правильности "подачи" не даю. Это все-лишь моё понимание. Я выкладываю эту информацию как макет, в надежде на участие сообщества в приведении её к более полному, достоверному и "читабельному" виду, такому, чтобы наконец собрать всё до кучи и поместить в шапку темы (зачистив при этом посты с процессом поиска и исследования). Так что не стесняемся высказывать своё мнение, знания и (malandrinus-у) редактировать неверные позиции.:-) Добавлено через 141 мин.: Хочу залезть глубоко в недра своего виртуального справочника, и показать как хотелось бы сделать описания. К примеру возьму функцию pairs, тем более что уже возникали вопросы по её использованию. На первый взгляд кажется, что функция проста в использовании. Может быть так оно и есть, но раз уж топик по lua, то углублённое понимание процессов подразумевается само собой. Этим и займёмся
  18. Собственно к ответу Artos-а остаётся только добавить. При выполнении файла с расширением .lua, в SciTE выполняется команда из lua.properties : command.go.*.lua=lua "$(FilePath)" Т.е. запускается командная консоль lua, находящаяся по адресу, например, C:\Program Files\Lua\5.1\lua.exe Эта консоль показана в виде окна в нижней части редактора и в ней отображается результат работы скрипта или вспомогательных действий. Например при выполнении команды "Поиск в файлах" в ней выводятся все файлы с найденным вхождением. Двойной клик на найденном результате открывает файл, содержащий искомую строку. Консоль можно открывать/закрывать принудительно "горячей" клавишей F8. Вы можете открыть и сам файл C:\Program Files\Lua\5.1\lua.exe. Появится окно, аналог CMD. Набирать код и получать результат можно и в этом окне. SciTE как бы разделяет эти операции. Код пишется в окне текстового (скриптового) редактора, а результат в описанном выше окне консоли. Удобство работы с кодом CMD и тем же кодом в SciTE не подлежит сравнению. Благодаря этой возможности, любители работы в CMD могут вызвать оную, и работать в окне консоли в режиме обычного текстового редактора. Напишите в файле *.lua : os.execute('cmd') И нажмите F5. Добавлено через 17 мин.: Чуть не забыл. Если Вы работаете в CMD, или Ваш скрипт "завис" можно принудительно остановить его выполнение комбинацией Ctrl+Break. Добавлено через 34 мин.: А на хpcall тоже?
  19. Извини, никак не пойму что это за точка такая? Может я и знаю что это такое, но по-своему. P.S. Попробую дописать про SciTE.
  20. malandrinus Насильно никого заставлять использовать тот или иной редактор, те или иные возможности не буду. Я сказал сразу, что настроек много, и каждый вправе использовать нужные. При желании пользователь может не только изменить существующие, но и добавить свои. Как например написать упомянутый тобою скрипт форматирования текста. Считаю главной фичей этого редактора саму возможность что-то изменять во внутренних настройках. Р.S. Поверь, не хотел и больше не хочу упоминать запрещенную тобой тему редакторов. Если кому что то нужно, ссылка уже есть. Достаточно.
  21. Казалось бы это условие подходит, но... t = {[1] = "111",[2] = "222", [3] = "333", [4] = "444", [5] = "555"} t[4]=nil print(#t) Темное это дело. Когда-то пытался понять закономерность, да плюнул. Наверное стоит признаться. Я знал о казусах с оператором # по отношению к таблицам, но промолчал. Думал пронесет. Не пронесло.
  22. Оказалась не лишней в единственном случае. Измени for idx, v in ipairs(t0) do if k~=2 then ... Или другое число, и твоя проверка становится бесполезной. В общем это не панацея. Оператор # вообще ведет себя странно. Скорее всего это связано с тем, что luа (как заявлено) старается любыми путями до последнего сохранять таблицу именно как список а не хэш. Хотя и тут встречаются аномалии. Так что на этот оператор в принципе не стоит делать ставку. Корректно работает только iраirs. Или же писать свой "определитель длины"
  23. Artos Можно написать свою функцию. Например (прототип) function string.pegexp(s, ...) local t = {...} for i = 1, #t do if s:match(t[i]) then return true end end end str=bla-bla w = str:regexp('one', 'two') Добавлено через 13 мин.: Это для Сталкера. Для luа ещё проще, через родную таблицу аrg : function string.pegexp(s, ...) for i = 1, arg.n do if s:match(arg[i]) then return true end end end
  24. Тоже жду кто ответит. Я таких возможностей не знаю. На данный момент считаю, что это можно сделать только из С (Lua C API).
  25. В SciTE присутствует боковая панель, в которой (в закладке "abbrev") находится список автоформатов выражений. Двойной клик на нужной строке вставляет в текст кода необходимое выражение. Или же при наборе выскочит окошко с возможным макросом, который вставляется по нажатию клавиши Enter/ Имея привычку пользоваться данным инструментом можно не беспокоится о "забытом" end-е, или о...В общем как Вы сами захотите настроить. А настраивается это дело по адресу .\Lua\5.1\SciTE\abbrev\lua.abbrev Как и что там писать, думаю, особого труда не составит. malandrinus Да кто же против? Будут у меня вопросы - задам, будут у других - попытаюсь ответить. А пока преследую свою цель. А именно постепенно выкладываю информацию согласно своей стандартизации. Сразу всё выложить не в состоянии.
×
×
  • Создать...