Je suis en train de développer une bibliothèque Lua dans laquelle je devais mettre en majuscule la première lettre d'une chaîne donnée. Par conséquent, j'ai créé la fonction suivante:"Étendre" la table "chaîne" - comment le faire? Est-ce même une bonne idée?
local capitalize = function(s)
return string.gsub (s,
"(%w)([%w]*)",
function (first, rest)
return string.upper(first) .. rest
end,
1)
end
Ce fut d'abord une fonction « interne », utilisé uniquement sur ma bibliothèque.
Maintenant, j'ai réalisé que mes utilisateurs voudront utiliser cette fonction dans certains cas.
Question 1 Je pense à l'extension de la table de chaînes, mais je ne sais pas comment procéder. Est-ce suffisant pour faire cela, ou y a-t-il une manière plus "orientée"?
string.capitalize = function(s)
... etc etc (same code as above)
Question 2 Je me demande si elle est même une bonne idée de chaîne monkey-patch. Dois-je fournir une fonction publique "capitaliser" à la place?
EDIT - Dans le cas où quelqu'un trouve cela à l'avenir, une fonction « tirer » beaucoup plus simple est affiché sur la page string recipes:
str = str:gsub("^%l", string.upper)
Merci pour le partage. Je vais enfin suivre votre "note finale" et ne pas polluer les cordes avec mes propres fonctions - je pense avoir trouvé une meilleure solution. Mais vos notes pourraient être utiles à l'avenir. – kikito