например)?
чтобы можно было индексировать строку внутрии функции или хотябы модуля
local str = 'qwe'
print(str[2])
через getmetatable('').__index меняется везде
А что ты хочешь? Чтобы условно только в твоей библиотеке у строк цифровая индексация была как у массивов, но чтобы всё остальное было таким же как было?
Ну типа local mystring = {} mystring.__index = mystring function mystring:new(str) return setmetatable({data = str}, self) end for k, v in pairs(string) do mystring[k] = function(self, ...) return v(self.data, ...) end end setmetatable(mystring, {__call = mystring.new}) Дальше навешиваешь свои функции. Но заранее предупреждаю, что: 1. Возвращаемые данные будут нормальными строками, как у оригинальных функций; 2. Для каждой строки будет создаваться прокси-табличка.
Обсуждают сегодня