Существует ли суперкласс, реализующий общие операторы?

Недавно я хотел создать простой класс данных для хранения некоторой физической величины (температуры) вместе с ее известными единицами измерения. Этот класс должен был иметь свойство Data, содержащее массив double произвольного размера, чтобы все распространенные функции, такие как plus, minus, cat, reshape и т. д., просто использовали значение Data и возвращали в результате массив double (I даже не обращайте внимания на то, что вывод не является новым экземпляром класса).

Однако, когда я начал реализовывать это, быстро стало очевидно, что если бы я хотел использовать такой класс, мне пришлось бы реализовать десятки этих общие функции/операторы только для того, чтобы получить функциональность, подобную double, что требует много работы при очень небольшом выигрыше.

Я подумал, что, возможно, я не первый, кто столкнулся с этой проблемой, поэтому мой вопрос: Существует ли какой-то существующий класс (например, mixin), от которого мы можем наследоваться и который определяет общие функции/ операторы с.р.т. какое-то свойство по умолчанию?

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


person Dev-iL    schedule 10.02.2019    source источник
comment
Зачем вам единицы, если вы игнорируете их при выполнении арифметических действий, а они исчезают при применении к матрице какой-либо операции? И если ваша арифметика все равно будет игнорировать единицы измерения, почему бы просто не привести к удвоению перед применением этих операций? Тогда все, что вам нужно, это метод double.   -  person Cris Luengo    schedule 10.02.2019
comment
@CrisLuengo Первоначально я имел в виду, что внутренние преобразования единиц измерения должны происходить при попытке выполнить вычисления температуры с разными единицами измерения, но я понял, что это излишество для моих нужд. Так что вопрос (со всеми его особенностями) — это результат того, что я сам с собой договариваюсь о том, что мне нужно для этой задачи. В идеале после арифметики я бы получил новый объект класса - но я понял, что если бы я хотел, чтобы он работал таким образом, мне, вероятно, пришлось бы реализовать все методы (что противоречит цели). Надеюсь, мои рассуждения ясны (даже если несколько ошибочны) :)   -  person Dev-iL    schedule 10.02.2019
comment
Я не знаю, существует ли такое смешивание или нет, я думаю, что оно имело бы ограниченную полезность. Шаблон имел бы больше смысла, ИМО. Но если ты не нашел, то и я не найду. :) У меня есть класс здесь, который перегружает большинство общих методы, только несколько вне classdef. Может быть, вы можете использовать его в качестве отправной точки:   -  person Cris Luengo    schedule 10.02.2019