Première version
Créez un fichier nommé mymodule.lua, puis ajoutez le code suivant :
1
2
3
4
5
6
7
|
local mymodule = {}
function mymodule.foo()
print("Hello world!")
end
return mymodule
|
Pour utiliser cette bibliothèque dans un autre fichier, il suffit de l’importer avec require
:
1
2
3
4
5
|
monModule = require "mymodule"
monModule.foo()
-- output :
-- Hello world!
|
Si votre module est situé dans un ou plusieurs sous-répertoires, utilisez la notation par points :
1
2
3
4
5
|
monModule = require "monRep.unAutreRep.mymodule"
monModule.foo()
-- output :
-- Hello world!
|
🔹 En Lua, le séparateur pour require
est un .
et non /
ou \
.
Exemple complet
Fichier : fmt/printf.lua
1
2
3
4
5
6
7
|
local fmt = {}
function fmt.printf(str, ...)
io.write(string.format(str, ...))
end
return fmt
|
Fichier utilisateur :
1
2
3
4
5
6
7
|
local fmt = require "fmt.printf"
local name = "Julien"
fmt.printf("Bonjour %s", name)
-- output :
-- Bonjour Julien
|
Deuxième version (fonction directe)
C’est une forme plus directe, que certains préfèrent, car elle évite de préfixer les appels avec un nom de module. Elle est souvent plus concise.
Exemple complet
Fichier : fileExists.lua
1
2
3
4
5
6
7
8
9
10
11
|
local function fileExists(filename)
local f = io.open(filename, 'r')
if f ~= nil then
io.close(f)
return true
else
return false
end
end
return fileExists
|
Fichier utilisateur : test.lua
1
2
3
4
5
6
7
8
9
10
11
|
local fileExists = require("fileExists")
local response = fileExists("fileExists.lua")
print(response)
response = fileExists("fichier_qui_nexiste_pas.lua")
print(response)
-- output :
-- true
-- false
|
Les deux méthodes sont valables : utilisez celle qui vous semble la plus adaptée à votre projet.