[Logo] LUA Форум
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Одновременное использование функций из нескольких файлов  XML
Forum Index » LUA: Общие вопросы
Author Message
ogogon
Новичок

Joined: 01/06/2008 10:47:38
Messages: 5
Offline

Добрый день!

У меня принципиально-идеологический вопрос.

Я планирую использовать lua как язык встроенных скриптов в некий движок. У него несколько функциональных задач.
Для примера - парсинг входной информации, ее логическая обработка и управление исполнительной периферией.
Скриптовый язык нужен для быстрой адаптации во всех трех сферах. Движок запускает функции с типовыми, заранее заданными именами и может быть "на лету", без перекомпиляции, перенастроен на сильно меняющиеся реалии.

При этом, логично, что бы типовые фунции парсинга содержались в файле parse.lua, обработки - processing.lua а управления железом в driving.lua.
При использовании разного оборудования или разных типов входящих данных можно загружать разные скрипты (parse01.lua, driver_15a.lua), при условии, что имена типовых функций в них будут одинаковые, а их код - написан под конкретное железо или разбираемый формат данных.

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

Ogogon.
XNut
ГУРУ
[Avatar]

Joined: 15/04/2008 12:12:47
Messages: 136
Location: Россия, Липецк
Offline

ogogon wrote:
Можно ли в lua одновременно загрузить и зарегистрировать функции из нескольких файлов и одновременно работать с ними?

вы встречали языки в которых этого сделать нельзя?

ogogon wrote:
Можно ли выгрузить функции, описанные в одном из файлов, удалить ссылки на них, а потом заменить одноименными из другого файла?

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

Вы бы для начала познакомились с тем, на чем писать собираетесь
ogogon
Новичок

Joined: 01/06/2008 10:47:38
Messages: 5
Offline

XNut wrote:
вы встречали языки в которых этого сделать нельзя?

А Вы не встречали?

XNut wrote:
функция потеряется, как только на нее не будет ссылок
заменять можно

А существует механизм принудительной выгрузки функции? Скажем, другие функции остаются, и эту функцию законно хотят. Но мне нужно заменить функцию на ее тезку из другого файла и с другим содержанием.
Существует ли шататный механизм, позволяющий выгрузить все функции из файла prog.lua? (Пробегает файл и все функции из него - долой...)

XNut wrote:
Вы бы для начала познакомились с тем, на чем писать собираетесь

Познакомился. И даже написал в свое время пару простых программ, использующих lua как язык расширения функционала. Поэтому, о нем и подумал имея в виду текущую задачу.
Но вот таким вопросом, как перегрузка "на лету" функций на одноименные не разу не задавался. И в документации такого не нашел.

Будте любезны, подскажите, где я могу "сначала познакомиться" с описанием этой интересной темы?

Ogogon.
XNut
ГУРУ
[Avatar]

Joined: 15/04/2008 12:12:47
Messages: 136
Location: Россия, Липецк
Offline

очень жду от вас примеров Языков Программирования, в которых нельзя одновременно загрузить и зарегистрировать функции из нескольких файлов и одновременно работать с ними?
smz
ГУРУ

Joined: 14/03/2008 13:23:00
Messages: 286
Offline

ogogon wrote:А существует механизм принудительной выгрузки функции? Скажем, другие функции остаются, и эту функцию законно хотят. Но мне нужно заменить функцию на ее тезку из другого файла и с другим содержанием.
Существует ли шататный механизм, позволяющий выгрузить все функции из файла prog.lua? (Пробегает файл и все функции из него - долой...)

В предположении, что ваши функции - глобальные, с предопределёнными именами, запуская на исполнение файл, содержащий одноимённые глобальные функции, вы немедленно заменяете текущие функции на функции из данного файла. Предварительной выгрузки функций не требуется.

Для того, чтобы только "выгрузить" глобальную функцию MyFunc достаточно выполнить код MyFunc=nil или MyFunc=function() end, к примеру.
moteus
Постоянный посетитель

Joined: 15/01/2008 22:12:04
Messages: 61
Offline

Может стоит использовать модули/объекты
Я так понял управляемая система может меняться динамически.
Момент смены должен как-то отслеживаться.
Если это callback то можно написать

Ну и использовать методы этих объектов для работы или передавать их как часть состояния в рабочие функции.
При таком подходе возможно работать одновременно с несколькими конфигурациями окружения.
 
Forum Index » LUA: Общие вопросы
Go to:   
Powered by JForum 2.1.9 © JForum Team