Настройте отображение нескалярных объектов, включая массивы пустого объекта.
Примечание
Этот пример использует EmployeeInfo класс описан в разделе Class with Default Object Display.
Цель этого индивидуально настраиваемого отображения к:
Создайте пользовательский заголовок с помощью некоторых элементов заголовка по умолчанию
Отобразите подмножество специфичной для свойства информации для каждого объекта в массиве.
Перечислите указатели на удаленные объекты в массиве с помощью char вектор со ссылками на документацию для указателя возражает и класс.
Отобразите пустые объекты с небольшой модификацией к заголовку по умолчанию
Вот индивидуально настраиваемое отображение массива трех EmployeeInfo объекты
1x3 EmployeeInfo array with members:
1. Employee:
Name: 'Bill Tork'
Department: 'Product Development'
2. Employee:
Name: 'Alice Blackwell'
Department: 'QE'
3. Employee:
Name: 'Nancy Green'
Department: 'Documentation'
Указатели удаленного объекта в массиве указывают на свое состояние:
1x3 EmployeeInfo members: 1. Employee: Name: 'Bill Tork' Department: 'Product Development' 2. handle to deleted EmployeeInfo 3. Employee: Name: 'Nancy Green' Department: 'Documentation'
Достигнуть желаемого результата, EmployeeInfo класс заменяет следующие методы matlab.mixin.CustomDisplay класс:
displayNonScalarObject — Названный, чтобы отобразить непустые массивы объектов
displayEmptyObject — Названный, чтобы отобразить массивы пустого объекта
MATLAB® вызывает displayNonScalarObject метод к массивам экранного объекта. Переопределение этого метода в EmployeeInfo класс:
Текст заголовка сборок с помощью convertDimensionsToString получить размер массивов и getClassNameForHeader получить имя класса со ссылкой на справку для того класса.
Отображает модифицированный текст заголовка.
Циклы через элементы в массиве, создавая два различных подзаголовка в зависимости от состояния отдельного объекта. В цикле, этом методе:
Обнаруживает указатели на удаленные объекты (использующий isvalid метод класса Handle). Использование getDeletedHandleText и getClassNameForHeader создавать текст для элементов массива, которые являются указателями на удаленные объекты.
Создает пользовательский подзаголовок для элементов доступного объекта в массиве
Создает PropertyGroup объект, содержащий Name и Department свойства для допустимого objects
Использует displayPropertyGroups статический метод сгенерировать отображение свойства для доступных объектов.
Вот реализация displayNonScalarObjects:
methods (Access = protected) function displayNonScalarObject(objAry) dimStr = matlab.mixin.CustomDisplay.convertDimensionsToString(objAry); cName = matlab.mixin.CustomDisplay.getClassNameForHeader(objAry); headerStr = [dimStr,' ',cName,' members:']; header = sprintf('%s\n',headerStr); disp(header) for ix = 1:length(objAry) o = objAry(ix); if ~isvalid(o) str1 = matlab.mixin.CustomDisplay.getDeletedHandleText; str2 = matlab.mixin.CustomDisplay.getClassNameForHeader(o); headerInv = [str1,' ',str2]; tmpStr = [num2str(ix),'. ',headerInv]; numStr = sprintf('%s\n',tmpStr); disp(numStr) else numStr = [num2str(ix),'. Employee:']; disp(numStr) propList = struct('Name',o.Name,... 'Department',o.Department); propgrp = matlab.mixin.util.PropertyGroup(propList); matlab.mixin.CustomDisplay.displayPropertyGroups(o,propgrp); end end end end
MATLAB вызывает displayEmptyObject метод, чтобы отобразить массивы пустого объекта. Реализация этого метода в EmployeeInfo класс создает пользовательский заголовок для пустых объектов, выполняющих эти шаги:
Получает измерения массива в формате символов с помощью convertDimensionsToString статический метод.
Получает текст с именем класса, соединенным с helpPopup функция с помощью getClassNameForHeader статический метод.
Сборки и отображения пользовательский текст для пустых массивов.
methods (Access = protected) function displayEmptyObject(obj) dimstr = matlab.mixin.CustomDisplay.convertDimensionsToString(obj); className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj); emptyHeader = [dimstr,' ',className,' with no employee information']; header = sprintf('%s\n',emptyHeader); disp(header) end end
Например, пустой EmployeeInfo отображения объекта как это:
Empt = EmployeeInfo.empty(0,5)
Empt =
0x5 EmployeeInfo with no employee information