Tôi đang phát triển một thư viện Lua, trong đó tôi cần viết hoa chữ cái đầu tiên của một chuỗi đã cho. Do đó tôi đã tạo ra chức năng sau:"Mở rộng" bảng "chuỗi" - cách thực hiện? Nó thậm chí là một ý tưởng tốt?
local capitalize = function(s)
return string.gsub (s,
"(%w)([%w]*)",
function (first, rest)
return string.upper(first) .. rest
end,
1)
end
Ban đầu, đây là chức năng "nội bộ", chỉ được sử dụng trên thư viện của tôi.
Bây giờ tôi đã nhận ra rằng người dùng của tôi sẽ muốn sử dụng chức năng này trong một số trường hợp.
Câu hỏi 1 Tôi đang nghĩ đến việc mở rộng bảng chuỗi, nhưng tôi không chắc chắn về cách tiếp tục. Là nó đủ để làm điều này, hoặc là có một cách "lua theo định hướng"?
string.capitalize = function(s)
... etc etc (same code as above)
Câu hỏi 2 Tôi tự hỏi nếu nó thậm chí còn là một ý tưởng tốt để monkeypatch chuỗi. Tôi có nên cung cấp chức năng "viết hoa" công khai thay thế không?
EDIT - Trong trường hợp có ai tìm thấy này trong tương lai, một đơn giản hơn nhiều "tận dụng" chức năng được hiển thị trên trang string recipes:
str = str:gsub("^%l", string.upper)
Cảm ơn bạn đã chia sẻ điều này. Cuối cùng tôi sẽ theo "lưu ý cuối cùng" của bạn và không phải chuỗi gây ô nhiễm với các chức năng của riêng tôi - tôi nghĩ rằng tôi đã tìm thấy một cách tốt hơn. Nhưng ghi chú của bạn có thể có ích trong tương lai. – kikito