Возможный дубликат:
Зачем делать глобальные функции Lua локальными?
Во многих lua-скриптах от сообщества я вижу что-то вроде добавления модуля в скрипт:
local module = require("module")
Но согласно руководству по lua, это не тот способ загрузки модулей. Сами модули имеют свое имя модуля внутри, так что
require("module")
достаточно использовать модуль следующим образом: module.myfunction(). Первый пример с локальным определением просто записывает "true" в переменную модуля, указывая на то, что модуль успешно загружен.
Странно то, что я вижу такую загрузку "local module = require("module")" везде в сети. Большинство скриптов из lua-сообщества у меня не работают из-за этой ошибки. Мне также интересно, почему я еще не нашел никаких проблем по этому поводу в Интернете.
Следующее, что даже загрузка модулей иногда приводит к странным ошибкам. Например: у меня есть скрипт с
require("purexml.lua")
чем я получил эту ошибку:
no field package.preload['purexml.lua']
no file './purexml/lua.lua'
no file '/usr/local/share/lua/5.1/purexml/lua.lua'
no file '/usr/local/share/lua/5.1/purexml/lua/init.lua'
no file '/usr/local/lib/lua/5.1/purexml/lua.lua'
no file '/usr/local/lib/lua/5.1/purexml/lua/init.lua'
no file './purexml/lua.so'
no file '/usr/local/lib/lua/5.1/purexml/lua.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './purexml.so'
no file '/usr/local/lib/lua/5.1/purexml.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
Но это работает нормально:
require("purexml")
Я пропустил что-то действительно очевидное здесь? Кстати, я использую Lua 5.1.4...
module
устарела, она все еще существует и может использоваться. - person Nicol Bolas   schedule 29.09.2012