Fingercomp 4 398 Опубликовано: 4 апреля, 2020 12 часа назад, MrAbad сказал: потому что, это не ООП, а в чистом виде замыкание и функциональное программирование ООП — это парадигма. Программа манипулирует объектами, которые хранят состояние (какие-либо данные) и могут обрабатывать сообщения. Это ещё называется вызовом методов. В приведённом коде у нас есть объект, хранящий состояние (a = 3, b = 14) и обрабатывающий сообщения printAandB, GET. По всем признакам это чистое ООП. ООП — это не наследование, полиморфизм и инкапсуляция, и на этих трёх вещах ООП не покоится. Это просто удобные фичи, которые часто встречаются. 1 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MrAbad 12 Опубликовано: 6 апреля, 2020 Цитата Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Однако соглашусь, что некоторые сходства с ООП есть. (Кстати, даже на Вики есть кусок про замыкания в Луа) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 901 Опубликовано: 6 апреля, 2020 6 часов назад, MrAbad сказал: Однако соглашусь, что некоторые сходства с ООП есть А я бы сказал, что наряду с местным ООП имеется также возможность его реализации посредством замыканий. При этом для полноценной работы с объектами замыкания вовсе не требуются, и одно другому не противоречит. Как написал Фингер выше - если язык позволяет реализовывать объекты, хранящие состояния в той или иной форме, то он поддерживает ООП. А все "доп. фичи" по типу полиморфизмов и нюансы реализации приваток путём замыканий являются скорее частным случаем. Плюс не припомню, чтобы хоть раз использовал замыкания, ибо память опенкомпов не резиновая. И тем не менее весь гуишный интерфейс строю на объектах, наследующихся друг от друга 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах