Size: a a a

2020 April 21

S

Snusmumriken in pro.lua
Намана разделяет, на моей практике по крайней мере.
источник

S

Snusmumriken in pro.lua
Плюс таких либ довольно много.
источник

S

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

AY

Arslan Yulbirdin in pro.lua
Snusmumriken
Но ты учитывай что юникод тоже не пальцем деланный. Составные символы/лигатуры никуда не деваются, и оказываются неотображаемыми символами.
Вот
источник

AY

Arslan Yulbirdin in pro.lua
В этом проблема была
источник

S

Snusmumriken in pro.lua
Поэтому сначала надыбай что-то для нормализации юникода.

В целом, любому кто работает с юникодом надо бы прочитать его спецификацию.
Юникод _сложен_.
источник

A

Ameliance SkyMusic in pro.lua
Snusmumriken
А, это уже для самостоятельной работы. Если я буду объяснять, ничего понятнее не станет.

Первым делом, попробуй убрать двоеточия, и заменить их точками с self при инициализации, и точкой с elem при вызове.
почему тут
function extended(Child, Parent)
 setmetatable(Child,{__index = Parent})
end

нельзя сделать так?
function extended(Child, Parent)
 setmetatable(Child, Parent)
end
источник

S

Snusmumriken in pro.lua
Ameliance SkyMusic
почему тут
function extended(Child, Parent)
 setmetatable(Child,{__index = Parent})
end

нельзя сделать так?
function extended(Child, Parent)
 setmetatable(Child, Parent)
end
Если у Parent есть поле __index, являющееся Parent'ом — можно, ничего не изменится.
источник

A

Ameliance SkyMusic in pro.lua
Snusmumriken
Если у Parent есть поле __index, являющееся Parent'ом — можно, ничего не изменится.
а если нет, то зачем тогда тут __index
источник

A

Ameliance SkyMusic in pro.lua
ох... почему так сложно то...
источник

S

Snusmumriken in pro.lua
Условно, при использовании __index есть три таблицы:

1. Таблица, в которой ищут недостающие ключи (Parent)
2. Метатаблица, которая указывает поведение тех кто к ней прицеплен (через __index)
3. Табличка, которая ищет недостающие ключи (Child)
источник

S

Snusmumriken in pro.lua
Ameliance SkyMusic
ох... почему так сложно то...
Не бойся, когда я начинал изучать — я подходил к метатаблицам раз пять на протяжении полугода. А потом прям вкурил и написал статью.
Статья уменьшает количество подходов вдвое.
источник

S

Snusmumriken in pro.lua
А потом метатаблички стали простыми и приятными : )
источник

S

Snusmumriken in pro.lua
Ameliance SkyMusic
а если нет, то зачем тогда тут __index
Потому что это метатаблица. Она задаёт поведение объектов которые к ней прицеплены через специальные ключи типа __index. Если просто задать метатаблицу — поведение оригинальной таблицы не изменится никак, она не начнёт искать ключи в метатаблице.
источник

A

Ameliance SkyMusic in pro.lua
то есть если я после этого
setmetatable(Child,{__index = Parent})

я обращаюсь к Child.x, то в начале оно поищет x в  Child, если не найдет, то в Parent, а затем в __index, которая в является метатаблицей Parent?
источник

S

Snusmumriken in pro.lua
mt = {}
mt.a = 10
mt.b = 20

tbl = {a = 100}

-- задаём поведение tbl по модели mt
setmetatable(tbl, mt)


------------
-- в mt ничего нет, она не меняет поведение tbl
print(tbl.a) --> 100
print(tbl.b) --> nil

------------
-- теперь в mt есть управляющий ключ,
-- она меняет поведение подчинённых табличек
-- подчинённые теперь ищут недостающее в mt
-- (это может быть и другая таблица)
mt.__index = mt

print(tbl.a) --> 100
print(tbl.b) --> 20
источник

S

Snusmumriken in pro.lua
Ameliance SkyMusic
то есть если я после этого
setmetatable(Child,{__index = Parent})

я обращаюсь к Child.x, то в начале оно поищет x в  Child, если не найдет, то в Parent, а затем в __index, которая в является метатаблицей Parent?
Ты обращяешься к Child.x. Нашли сразу? Выдали.
Не нашли? Смотрим, есть ли у метатаблицы Child'а поле __index.
Есть? Поискали по значению этого поля. Нашли? Выдали.
источник

S

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

A

Ameliance SkyMusic in pro.lua
Snusmumriken
Ты обращяешься к Child.x. Нашли сразу? Выдали.
Не нашли? Смотрим, есть ли у метатаблицы Child'а поле __index.
Есть? Поискали по значению этого поля. Нашли? Выдали.
то есть тут
setmetatable(Child,{__index = Parent})
через индекс мы не добавляем родительские элементы напрямую, а добавляем их в резерв?
источник

S

Snusmumriken in pro.lua
Мы добавляем Child'у лишнюю таблицу для поиска недостающего. Да.
источник