Настройте отображение нескалярных объектов, включая массивы пустого объекта.
Примечание
Этот пример использует 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