Я хотел бы создать одноэлементный класс MATLAB, выступающий в качестве глобального реестра. В реестре должны храниться объекты (определенного класса, производные от handle
) с уникальными именами. Я хотел бы получить доступ к свойствам хранимых классов без временных переменных , например:
Registry.instance().addElement('name1', NewObject(...));
Registry.instance().get('name1').Value
Registry.instance().get('name2').Value = 1;
Считывание свойств возвращаемого класса можно обойти, удалив ()
из instance
:
>> Equipment.instance.get('name1').Value
Однако использование назначений не представляется простым, поскольку, как отмечено в комментариях, индексирование точек нельзя использовать непосредственно на выходе функции без назначения промежуточной переменной.
Как правильно внедрить и использовать такой «единый реестр» в MATLAB?
Следует отметить, что синглтон-класс содержит некоторую логику, которая вызывается при добавлении элементов в список, логику для правильного уничтожения объектов в правильном порядке и другие методы, которые выполняют итерацию по списку объектов. По этой причине «обычный» containers.Map
не может быть использован.