LINUX.ORG.RU

История изменений

Исправление proud_anon, (текущая версия) :

Во-первых, таблицы и перегрузка __index более похожи на прототипную парадигму, чем на объектно-ориентированную с классами. Поэтому прототипное наследование реализуется прямым и очевидным способом, а если нужны классы и экземпляры, то да, надо посидеть подумать. А они тебе правда нужны?

Во-вторых:

Или еще проще (проще ли?) - добавить метаметод __method, который будет действовать аналогично __index, но для для object:method

Тогда ведь получится, что object:method() не эквивалентен object.method(object). Это уже значительное усложнение языка.

Лучше отвлекись от классов, экземпляров и методов и подумай в терминах таблиц, функций и (если нужно) возможностей метатаблиц, что тебе нужно сделать. Может быть, и классы не нужны будут.

Исправление proud_anon, :

Во-первых, таблицы и перегрузка index более похожи на прототипную парадигму, чем на объектно-ориентированную с классами. Поэтому прототипное наследование реализуется прямым и очевидным способом, а если нужны классы и экземпляры, то да, надо посидеть подумать. А они тебе правда нужны?

Во-вторых:

Или еще проще (проще ли?) - добавить метаметод __method, который будет действовать аналогично __index, но для для object:method

Тогда ведь получится, что object:method() не эквивалентен object.method(object). Это уже значительное усложнение языка.

Лучше отвлекись от классов, экземпляров и методов и подумай в терминах таблиц, функций и (если нужно) возможностей метатаблиц, что тебе нужно сделать. Может быть, и классы не нужны будут.

Исходная версия proud_anon, :

Во-первых, таблицы и перегрузка index более похожи на прототипную парадигму, чем на объектно-ориентированную с классами. Поэтому прототипное наследование реализуется прямым и очевидным способом, а если нужны классы и экземпляры, то да, надо посидеть подумать. А они тебе правда нужны?

Во-вторых:

Или еще проще (проще ли?) - добавить метаметод __method, который будет действовать аналогично __index, но для для object:method

Тогда ведь получится, что object:method() не эквивалентен object.method(object). Это уже значительное усложнение языка.