Un besoin commun dans de nombreuses structures de données est de renvoyer des valeurs. Cet article couvrira la recherche d'une table en utilisant pairs() ou ipairs() pour la moitié de n'importe quel élément de table, tels que la clé ou la valeur, pour trouver et renvoyer l'autre moitié.
L'exemple utilise un tableau listant les bateaux en attente de réparation. ipairs() est utilisé pour renvoyer l'emplacement d'un bateau en ligne.
local shipToFind = "Void Racer"
-- Bateaux en attente de réparation
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Obtenez une place en ligne
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Imprimer le lieu en ligne
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)
Exemple de recherche dans le dictionnaire
Avez-vous déjà recherché un animal de compagnie perdu à la maison en allant de pièce en pièce ? Sur votre propre code une fonction pour rechercher dans un dictionnaire nommé maison pour voir quelle chambre contient un chiot perdu.
Copiez le dictionnaire ci-dessous pour agir comme la maison.
local house = {kitchen = "pile of Junk",livingRoom = "kitten",bedroom1 = "nobody there",bedroom2 = "puppy",}Créez une nouvelle fonction appelée findPet() pour rechercher le dictionnaire. Incluez des paramètres pour que le dictionnaire soit recherché et quelle valeur rechercher.
Utilisez pairs() pour itérer à travers le dictionnaire. Essayez de taper votre propre avant de vérifier votre travail dans la solution ci-dessous.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendAu fur et à mesure que la boucle for itère dans le dictionnaire, utilisez return pour retourner la salle où le animal de compagnie a été trouvé.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend