“Расширьте” “строковую” таблицу - как сделать это? Это - даже хорошая идея?

Я разрабатываю библиотеку Lua, в которой мне была нужна к верхнему регистру первая буква данной строки. Следовательно я создал следующую функцию:

local capitalize = function(s)
  return string.gsub (s,
    "(%w)([%w]*)",
    function (first, rest) 
      return string.upper(first) .. rest
    end, 
    1 )
end

Это первоначально было "внутренней" функцией, используемой только на моей библиотеке.

Теперь я понял, что мои пользователи захотят использовать эту функцию в некоторых случаях.

Вопрос 1 я думаю о расширении таблицы строк, но я не уверен в том, как продолжить двигаться. Это достаточно, чтобы сделать это или является там более "lua-ориентированным" путем?

string.capitalize = function(s)
  ... etc etc (same code as above)

Вопрос 2 интересно, является ли это даже хорошая идея строке monkeypatch. Я должен обеспечить, общественность "используют для своей выгоды" функцию вместо этого?

РЕДАКТИРОВАНИЕ - В случае, если любой находит это в будущем, намного более простое, "использует для своей выгоды" функцию, показан на строковой странице рецептов:

str = str:gsub("^%l", string.upper)

6
задан kikito 26 January 2010 в 11:49
поделиться