Un besoin courant dans de nombreuses structures de données est de retourner des valeurs. Cet article couvrira la recherche dans une table en utilisant pairs() ou ipairs() pour une moitié de tout élément de la table, comme la clé ou la valeur, afin de trouver et retourner l'autre moitié.
L'exemple utilise un tableau répertoriant les navires en attente de réparation. ipairs() est utilisé pour retourner la place d'un navire dans la file.
local shipToFind = "Void Racer"
-- Navires en attente de réparation
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Obtenir la place dans la file
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
-- Imprimer la place dans la file
local placeInLine = getPlaceInLine(shipToFind)
print("Votre place dans la file est " .. placeInLine)
Exemple de recherche dans un dictionnaire
Avez-vous déjà cherché un animal de compagnie perdu dans votre maison en parcourant pièce par pièce ? Écrivez votre propre fonction pour rechercher dans un dictionnaire nommé house afin de voir quelle pièce contient un chiot perdu.
Copiez le dictionnaire ci-dessous pour agir comme la maison.
local house = {kitchen = "tas de déchets",livingRoom = "chaton",bedroom1 = "personne là",bedroom2 = "chiot",}Créez une nouvelle fonction appelée findPet() pour rechercher dans le dictionnaire. Incluez des paramètres pour quel dictionnaire rechercher, et quelle valeur rechercher.
Utilisez pairs() pour itérer à travers le dictionnaire. Essayez de coder le vôtre avant de vérifier votre travail dans la solution ci-dessous.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendÀ mesure que la boucle for itère à travers le dictionnaire, utilisez return pour renvoyer la pièce où l'animal de compagnie a été trouvé.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend