A
Size: a a a
A
AP

S
local t = {}
function t.foo(tbl, a, b)
tbl.v = a + b
end
t.foo(t, 10, 20)
t:foo(10, 20)
==local t = {}
-- аргумент self автоматически провешивается, если пишем двоеточие при инициализации
function t:foo(a, b)
self.v = a + b
end
t:foo(10, 20)
t.foo(t, 10, 20)
S

class Foo:
bla = 10
def bar(self, a, b):
self.bla = a + b
S
self.AP
S
local str = {}
function str:split(delm)
delm = delm or " "
local res = {}
-- self это первый аргумент,
-- который передадут в функцию
for l in string.gmatch(self..delm, "(.-)"..delm) do
res[#res + 1] = l
end
return res
end
-- передаём первым аргументом строку
local tbl = str.split("hello world", " ")
print(tbl[1]) --> "hello"
То есть, self может не быть таблицей. Что туда передадим — то и будет. В ООП на сишных структурах такое часто используется.S
string.local s = "yo"
print(string.match(s, ".")) --> y
print(s:match(".")) --> y
S
МК
МК
МК
МК
МК
МК