suppose que je suis l'insertion d'une chaîne de caractères dans un tableau comme suit:Dans Lua, puis-je facilement sélectionner le résultat Nth sans fonctions personnalisées?
table.insert(tbl, mystring)
et que mystring
est généré par le remplacement de toutes les occurrences de "a" par "b" dans input
:
mystring = string.gsub(input, "a", "b")
L'évidence façon de combiner les deux en une seule instruction ne fonctionne pas, car gsub
renvoie deux résultats:
table.insert(tbl, string.gsub(input, "a", "b")) -- error!
-- (second result of gsub is passed into table.insert)
qui, je suppose, est le prix payé pour soutenir plusieurs valeurs de retour. La question est, y a-t-il un moyen standard, intégré pour sélectionner uniquement la première valeur de retour? Quand j'ai trouvé select
je pensais que c'était exactement ce qu'il a fait, mais hélas, il sélectionne effectivement tous les résultats à partir de N, et ne contribue donc pas dans ce scénario.
Maintenant, je sais que je peux définir ma propre select
comme suit:
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
mais cela ne semble pas juste, car je pense d'une manière intégrée de le faire.
Alors, est-ce qu'il me manque un construit intégré? Si non, les développeurs de Lua ont-ils tendance à utiliser une variable séparée pour extraire l'argument correct ou écrire leurs propres fonctions select1
?
Merci! Je parie que je finirai dans la même situation en ne voulant que le résultat _second_ - quelles options ai-je alors? –
@romkyns: Mise à jour de mon post pour répondre. Bien que votre fonction 'select1' puisse être plus lisible. – interjay
J'aime utiliser des tétines pour cela, par exemple '_, _, _, fourthVal, _ = giveMeFive()' Je le trouve plus lisible de cette façon. – deorst