« Initiation au Lua avec Scribunto/Exercices/Sur les fonctions basiques » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Exercice 5-1 : rédaction
→‎Exercice 5-1 : rédaction
Ligne 11 :
== Exercice 5-1 ==
 
Un des problèmes possibles, lorsqu'on écrit une grande table dont les clés sont des chaînes de caractère sont des clés, est que, sans le faire exprès, on risque d'utiliser la même clé plusieurs fois. Nous allons donc étudier ce cas de figure dans cet exercice.
 
Soit la table suivante :
Ligne 22 :
Nous voyons que nous avons utilisé la clé "Poisson" deux fois.
 
Écrire une fonction '''p.detectionlistecle''' qui permet ded'énumérer détecterle unecontenu cléde écritecette table en doubleutilisant dansla cettefonction table'''pairs'''.
 
Que remarque-t-on ?
 
 
Ligne 29 ⟶ 31 :
La solution de l'exercice se trouve dans le [[module:Doublon]].
 
<syntaxhighlight lang="lua">
{{#invoke:Doublon|constatation}}
local p = {}
 
local Categorie = { ["Prénom"] = "Christine", ["Mois"] = "Avril", ["Métier"] = "Boulanger", ["Poisson"] = "Truite",
["Métal"] = "Argent", ["Poisson"] = "Sardine", ["Planète"] = "Saturne", ["Instrument"] = "Piano"}
 
function p.listecle()
local reponse = "<u>Description de la table</u>"
for index, objet in pairs(Categorie) do
reponse = reponse.."<br />à la clé numéro "..index.." se trouve l'objet "..objet.."."
end
return reponse
end
 
return p
</syntaxhighlight>
 
'''<nowiki>{{#invoke:Doublon|listecle}}</nowiki>''' nous donne :
 
{{#invoke:Doublon|listecle}}
 
Nous remarquons que l'erreur n'est pas signalée. Une des deux clés "Poisson" n'a, tout simplement, pas été enregistrée. Lorsque l'on écrit une longue table, nous devons donc faire particulièrement attention de ne pas utiliser deux fois la même clé car cette erreur n'est pas signalé et l'une des deux clé ne sera pas prise en compte.
{{#invoke:Doublon|detection}}
 
}}