Norman Eisenherz 316 Опубликовано 3 Марта 2020 Здрасьте. Задача: вызвать несколько функций при чтении нетпакета, составляя их названия из строки "r_" и типа переменной. На выходе должно получиться r_u8(), r_stringZ(), r_float() и т. д. Шаблон, насколько мне известно, такой: namespace["func"](arg1, arg2). Пример вызова функции без привязки к объекту: _G["time" .. "_global"](). Тест: • net_packet["r_u32"]() – вылет "pure virtual function call" (ожидаемо – нет ссылки на нетпакет) • pk:net_packet["r_u32"]() – вылет "attempt to index global 'script_filename' (a nil value)" Каким должен быть синтаксис при таком вызове функций? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 316 Опубликовано 21 Марта 2021 Здрасьте. Если this["подстановка"]() позволяет вызвать функцию по строковому имени из текущего скрипта, то для чего нужны конструкции вида this.точное_имя(), если прямой вызов по имени функции и так действует в текущем скрипте? Примеры: ЗП [utils.script] this.vector_copy_by_val() ТЧ [uilts.script] и [xr_talker.script] this.vector_copy_by_val() – две разные функции, но каждая вызывается только в своем скрипте Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 316 Опубликовано 30 Октября 2022 Здрасьте. Задача: показать разницу в работе модификаторов поиска * + - ?. Один пример удалось подобрать так, чтобы результат поиска отличался для всех вариантов, но хочется чего-то более наглядного. Может, кому попадалось более интересное сочетание строки и шаблона? Spoiler local str = "aa1a22a333" local t = {} for x in str:gmatch("a%d#") do t[#t +1] = x end # * a, a1, a22, a333 -- буква и 0+ цифр + a1, a22, a333 -- буква и 1+ цифра - a, a, a, a -- буква и 0+ цифр, короткое совп. ? a, a1, a2, a3 -- буква и 0/1 цифра Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение