2017-02-09 1 views
1

Bonjour je suis un débutant dans Lua je veux juste savoir s'il existe un moyen d'obtenir la clé et la valeur de la table pas en utilisant paires, ipairs, next ou autres itérateurs? Merci d'avance.!naviguer table sans utiliser de paires dans Lua

+0

En fait c'est mon devoir de créer un code morse .. en utilisant des paires, il peut être fait facilement. mais notre professeur a dit que si nous essayons de ne pas utiliser des paires ou des itérateurs, il nous donnera de meilleures notes. J'étais déjà coincé toute la journée à chercher un moyen de ne pas utiliser les itérateurs mais je n'ai toujours pas trouvé de chemin ... –

+0

La fonction primitive pour parcourir les tables est 'next'. Sans elle, ou 'paires' (qui utilise' next'), il n'y a pas d'autre moyen. – lhf

+0

ouais c'est pourquoi im soo confus sur la façon de traverser la table sans utiliser la fonction construite par lua ... merci pour la réponse –

Répondre

2

Je ne crois pas que ce soit possible, car vous avez formulé votre question de manière à ce que la clé soit inconnue. La seule façon de vérifier une certaine valeur et sa clé correspondante serait de parcourir toute la table.

Cependant, j'ai peut-être mal compris et vous voulez obtenir une certaine valeur à partir d'une clé sans parcourir toute la table.

Supposons que vous avez une table nommée morse comme suit:

morse = { a = ".-"; b = "-..."; } -- And so on 

Si vous voulez convertir un seul caractère à morse que vous pourriez faire comme suit:

morse["a"] --Which will return the string ".-" 

Vous pouvez faire le contraire, et définissez une table avec toutes les valeurs morse et leurs lettres correspondantes comme ci-dessous. Notez l'utilisation de crochets pour "échapper" les caractères.

morse = { [".-"] = "a"; ["-..."] = "b" } 
morse[".-"] -- This will return "a" 
+0

désolé. J'ai oublié de dire que je dois créer un code morse qui peut convertir l'anglais en morse ou en morse en anglais. merci monsieur pour la réponse j'ai essayé d'utiliser cette approche en utilisant des paires je peux obtenir à la fois la clé et la valeur, c'est pourquoi je continue à penser comment puis-je obtenir la clé comme 'morse = {[".-"] = "a" = ["a"] retournerait "a" au lieu de ".-" –

0

Basé sur your comment, je pense que vous êtes à la recherche d'une substitution de chaîne à l'aide d'une table de correspondance. Je pense que vous pouvez utiliser string.gsub here (si votre professeur insiste sur le fait encore que .gsub est un itérateur, vous pouvez leur demander poliment que vous ne connaissez pas la méthode qu'ils prétendent et que ravis d'apprendre réellement sur le même):

local str = "sos sos sos" 
local morse = {s = "...", o = "---"} 

print(str:gsub("%a", morse))