Перейти к контенту

Язык Lua. Общие вопросы программирования


Malandrinus

Рекомендуемые сообщения

Здрасьте.

 

Задача: вызвать несколько функций при чтении нетпакета, составляя их названия из строки "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)"

 

Каким должен быть синтаксис при таком вызове функций?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Поделиться этим сообщением


Ссылка на сообщение

Здрасьте.

 

Если this["подстановка"]() позволяет вызвать функцию по строковому имени из текущего скрипта, то для чего нужны конструкции вида this.точное_имя(), если прямой вызов по имени функции и так действует в текущем скрипте?

 

Примеры:

ЗП [utils.script] this.vector_copy_by_val()

ТЧ [uilts.script] и [xr_talker.script] this.vector_copy_by_val() – две разные функции, но каждая вызывается только в своем скрипте

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Поделиться этим сообщением


Ссылка на сообщение

Здрасьте.

 

Задача: показать разницу в работе модификаторов поиска * + - ?. Один пример удалось подобрать так, чтобы результат поиска отличался для всех вариантов, но хочется чего-то более наглядного. Может, кому попадалось более интересное сочетание строки и шаблона?

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 цифра

 

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...