Size: a a a

2021 March 10

S

Snusmumriken in pro.lua
Не думаю что они сломаются с добавления __index'у дополнительной проверки на тип ключа.
Твой личный плагин будет делать для тебя плюхи, остальные останутся в целом незатронутыми, потому что они, как нормальные люди — не делали бяк.

С третьей стороны, зачем именно массиво-индексация? Да, str[2] это немножко короче чем str:sub(2, 2), но принципиальная разница? Они даже выглядят примерно одинаково.
источник

️ ️️ in pro.lua
ну я сделал так

но хотелось бы сделать это локально
источник

S

Snusmumriken in pro.lua
Можешь. А можешь вместо str[index] делать str:sub(index, index). У строк есть методы. Метатаблица ровно за этим и нужна.
источник

️ ️️ in pro.lua
я это делаю чтоб получилась красивая функция

но чтото чтоб она получилась нужно много чего некрасивого делать
источник

S

Snusmumriken in pro.lua
То есть, ты можешь писать как
string.sub(str, i, i), так и
str:sub(i, i), и второй очень похож на доступ как с массивом.
источник

S

Snusmumriken in pro.lua
function string:c(i)
 return self:sub(i, i)
end
...
return (x:c(1), y:c(1), x:c(2), y:c(2))

Сомнительно что какой-то из модулей добавляет строкам функцию c, и тем более её использует ))
источник

S

Snusmumriken in pro.lua
Гы, манки-патчинг. И метатаблица цела.
источник

️ ️️ in pro.lua
это надо c и для масивов делать
источник

S

Snusmumriken in pro.lua
Оооо
источник

️ ️️ in pro.lua
что О_о
источник

S

Snusmumriken in pro.lua
local _z = {}
function _z.string(v, i)
 return tostring(v):sub(i, i)
end

function _z.table(v, i)
 return v[i]
end

setmetatable(_z, {__index = function() return _z.string end})


function zip(x, y)
 if type(x) ~= 'table' then
   y = tostring(y)
 end
 local tx, ty = _z[type(x)], _z[type(y)]

 return tx(x, 1), ty(y, 1), tx(x, 2), ty(y, 2)
end
источник

️ ️️ in pro.lua
источник

S

Snusmumriken in pro.lua
Но в целом, использовать один и тот же зип для посимвольной и/или табличной фигни одновременно это имхо стрёмна.
источник

S

Snusmumriken in pro.lua
Но вообще, на табличках можно сделать довольно много таких хаков.
источник

️ ️️ in pro.lua
ну на вимскрипте оно число индексирует как символ строки
let var = 1488
echo var[1]  ; 4

а я эту функцию на луа переписываю
источник

S

Snusmumriken in pro.lua
То есть оно даже числа как бы преобразует в строки?
источник

️ ️️ in pro.lua
да :^)
источник

S

Snusmumriken in pro.lua
Его же можно использовать как дефолтный, если не нашлось другого.
источник

️ ️️ in pro.lua
входные данные довольно таки захардкожены и можно сделать чуть проще

потом покажу как сделал
источник

S

Snusmumriken in pro.lua
Я уже добавил дефольный с преобразованием в строку и извлечением нужного символа ))
Костыли-и-и, зато покрыты ВСЕ типы.
источник