Управление мета-классами в MatLab

Mar 14, 2024 17:19

В MatLab есть функция isa(object, className), которая проверяет, является ли данный объект «совместимым» с указанным классом (либо объект самого класса, либо объект одного из наследующих классов). Оно само по себе плохо, иметь код с такими проверками, но так уж получилось, у нас такое есть. Например, когда в одном файле хранятся объекты разного ( Read more... )

matlab, rabota

Leave a comment

aklepatc March 14 2024, 17:54:07 UTC
Это не арифметическое сравнение. Это отношение порядка (частичного) на множестве классов. Как-то так...

Плюсовики и питонисты привыкли к такой штуке, как "перегрузка операторов". А для нормальных людей это, возможно, выглядит диковато.

Reply

yatur March 15 2024, 02:34:53 UTC
Это был бы частичный порядок, если б оно могло вернуть "а черт его знает", когда сравнение невозможно. А так, судя по всему, оно тупо возвращает False, нарушая все возможные правила.

Reply

aklepatc March 15 2024, 03:06:02 UTC
Разумная поправка...

Однако, если я правильно понимаю расклад, нас интересует только "истина".

"Истина" - это "да", "ложь" - это "нет" или "не знаю". В этой задаче не нужно отличать "нет" от "не знаю".

Reply

green_fr March 15 2024, 08:19:58 UTC
Да, именно так. Но при этом разрушается привычное "не больше" = "меньше".
В принципе, это и до того было так со значениями à la null (неизвестно, не определено, не число и пр.) Но меня все равно коробит. Почему нельзя было сделать методом с понятными именем? Зачем использовать операторы, уже имеющие очень сильную коннотацию? Тем более, использовать в смысле, эту коннотацию разрушающем.

Reply

sir_baristan March 15 2024, 10:47:22 UTC
А кто вам запрещает сделать такой метод с понятным именем, внутри будет стоять оператор.
Вот оператор свой сделать не везде можно, а метод в чем проблема.
Будет принимать два параметра, а если общий предок у всех ваших классов, то и 1 можно, а свой метакласс он знает

Reply

green_fr March 15 2024, 15:46:03 UTC
Да, я чуть ниже написал - так и сделаю!

Reply

sir_baristan March 15 2024, 10:53:22 UTC
То есть просто надо понимать, что оператор это синтаксический сахар, де факто это под капотом вызов функции. Соответственно не нравится, что называется так, назовите как вам понятно

Reply

aklepatc March 15 2024, 13:02:55 UTC
Это просто математика, кмк. "Не больше" есть "меньше или равно" верно для отношений полного порядка. А у нас - частичное. Математики, емнип, смело используют знаки меньше и т.д. в обоих случаях.

Reply

aklepatc March 15 2024, 03:13:25 UTC
Немного подумав... По-моему, отношение частичного порядка так и работает в общем случае.

Любая упорядоченная пара a, b или "связана" отношением или нет. "Нет" означает или что между a и b вообще никакого порядка нет или, возможно, что порядок есть между b и a (но не a и b).

Reply


Leave a comment

Up