Size: a a a

2020 October 31

RS

Roman Silin in pro.lua
Ну, может быть. Просто я на swift постоянно с этим работаю, чтобы интерфейсы были чистыми. И пытаюсь понять можно ли вообще от этой концепции в lua получить какой-то прок. Ничего на ум не приходит, интерфейсов то как таковых нет, таблицы и ключи, и лишь какой-нибудь emmylua пропарсит все и подскажет где какой есть интерфейс )
источник

RS

Roman Silin in pro.lua
Типа компилятор схавает все, поэтому не применимо
источник

S

Snusmumriken in pro.lua
Как я понимаю, в данном контексте, интерфейс это некоторое соглашение на набор полей и методов.
Типа, если два класса имеют одинаковые методы (и/или связанные с ними поля) с однотипным вводом-выводом, то у них как бы есть общий интерфейс.
источник

RS

Roman Silin in pro.lua
Может если с emmylua обертки какие делать, таблицы с интерфейсов протокола который будут закрывать собой реальные таблицы, пробрасывать. Я как и говорил выше, все это избвращение потенциально, но любопытно.
источник

RS

Roman Silin in pro.lua
Snusmumriken
Как я понимаю, в данном контексте, интерфейс это некоторое соглашение на набор полей и методов.
Типа, если два класса имеют одинаковые методы (и/или связанные с ними поля) с однотипным вводом-выводом, то у них как бы есть общий интерфейс.
Верно. они поддерживают протокол. Типа "Да, мы это умеем".

А где-то снаружи ты с этим протоколои толкьо и работаешь, типа тебе не важно что там еще есть и что это вообще такое. Такая развязка от друг друга. Помогает еще в depency injection чтобы подставлять модули по протоколу, дисциплинирует разраба писать по полочкам.
источник

S

Snusmumriken in pro.lua
> дисциплинирует разраба писать по полочкам
Вот это меня радует больше всего ))

По сути, основная проблема ООП в том, что его очень легко абузить так, чтобы код превращался в кашу из наследований, и хорошо если не множественных.
Основная проблема классического процедурного проганья ещё и в том, что оно даёт ну слишком много свободы, и для того чтобы структурированно писать нужно быть семи пядей во лбу, хорошо хоть у ООП нет такой проблемы.
источник

S

Snusmumriken in pro.lua
И основной задачей новых модных методик становится сделать так, чтобы "при наших правилах не было принципиальной возможности написать криво или абузить наши правила".
источник

RS

Roman Silin in pro.lua
Ну вот ктсати, с помощью протоколов в роли миксинов ты можешь ослабить наследование и вынести функционал "сбоку", более горизонтально )
источник

RS

Roman Silin in pro.lua
Да, попытка придти к балансу. Чтобы и криво не было, и гибкость была.
источник

RS

Roman Silin in pro.lua
Да фиг с ним с наследованием, по вопросу оно и не нужно нам ) Смотри, что у нас есть:

- идея фикс протокола countable, со свойством count: Int
- три таблицы. не суть какие они и зачем, но у двух есть свойство "count", а в третьей его нет. причем первая и вторая в остальном вообще про разное.

- задача чтобы нельзя было вставить куда-то свойством эту таблицы если они не имеет свойства count (не поддерживают countable) и как-то это удобно описать на lua. Попытка вставить третью таблицу выставит nil.
- задача чтобы эти две таблицы с count лежали в массиве и была уверенность что они туда попали так как поддерживают countable. и вытаскивая их оттуда мы работали с таблицей которая только лишь с этим свойством, а осатльное где-то зашито внутрь.
источник

RS

Roman Silin in pro.lua
Т.е. по факту нам видимо нужны:
- сеттеры которые делают проверку на наличие свойств и типов
- геттеры которые возвращают обертку с интерфейсом протокола и в метатаблице держат ссылку на оригинал и дергают его по мере вызова методов протокола
источник

S

Snusmumriken in pro.lua
Roman Silin
Да, попытка придти к балансу. Чтобы и криво не было, и гибкость была.
Чтобы криво не было, достаточно не писать криво ))
Процедурным проганьем можно писать ровно и чисто. Сложно но можно. ООП можно сделать ровным, хоть это и набор ограничений "для бобиков" над процедурами. Почти что угодно можно сделать ровным, вопрос только в том, будут ли абузить правила это или нет (будут, инфа 100%).
И задачей становится ввод таких ограничений, чтобы абузить было НЕЛЬЗЯ СОВСЕМ, но при этом была "гибкость". Совсем в идеале, чтобы суперпрофессионал и новичок писали бы буквально одно и то же, ибо поддержка.
источник

RS

Roman Silin in pro.lua
Ок ок, ну это сейчас не так важно. Давай задачу на lua решим, как тебе идея выше? )
источник

S

Snusmumriken in pro.lua
Да норм, на подумать.
источник
2020 November 01

H

Hello, World! in pro.lua
Всем привет, возможно ли выучить луа, за час, день?
источник

AY

Arslan Yulbirdin in pro.lua
Hello, World!
Всем привет, возможно ли выучить луа, за час, день?
За 15 минут даже: http://tylerneylon.com/a/learn-lua/
источник

H

Hello, World! in pro.lua
Ну всё равно нужно учить функции и тд
источник

H

Hello, World! in pro.lua
Код:
t = {
 a = 3,
 b = 4
}

for key, value in pairs(t) do
 print(key, value)
end

Почему вывод всегда разный?
источник

H

Hello, World! in pro.lua
a  3
b  4
источник

H

Hello, World! in pro.lua
b  4
a  3
источник