2016-09-29 1 views
2

J'essayais de diviser une chaîne en une table, en utilisant gmatch avec %S+. Cependant, je suis tombé sur l'erreur:Tentative d'indexer les 'args' locaux (une valeur de fonction)

Attempt to index local 'args' (a function value)

Voici les trois lignes de code, je crois avoir le problème:

print(msg) 
local args = string.gmatch(msg, "%S+") 
print(args[1]) 

Ainsi, la première ligne print(msg) juste imprime une chaîne normale, comme il se doit. La deuxième ligne est supposée diviser cette chaîne par des espaces, et stocker la table dans args. La troisième ligne est supposée imprimer la première valeur dans la table, mais à la place elle me donne l'erreur montrée ci-dessus. Merci.

Répondre

5

string.gmatch ne renvoie pas les résultats comme vous l'attendez; il renvoie un itérateur (une fonction spéciale), que vous pouvez ensuite utiliser dans une boucle pour obtenir les valeurs dont vous avez besoin. C'est pourquoi vous obtenez cette erreur lorsque vous essayez d'indexer la fonction retournée.

Vous pouvez vérifier the documentation ou this SO question pour obtenir des exemples sur la façon d'utiliser gmatch pour obtenir les valeurs.

+0

Merci beaucoup! – Frosty