Настройте отображение нескалярных объектов, включая массивы пустого объекта.
Этот пример использует класс 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
Класс CustomDisplay:
displayNonScalarObject
Названный, чтобы отобразить непустые объектные массивы
displayEmptyObject
Названный, чтобы отобразить массивы пустого объекта
MATLAB® вызывает метод displayNonScalarObject
к массивам экранного объекта. Переопределение этого метода в классе EmployeeInfo
:
Текст заголовка сборок с помощью convertDimensionsToString
, чтобы получить размер массивов и getClassNameForHeader
, чтобы получить имя класса со ссылкой на справку для того класса.
Отображает измененный текст заголовка.
Циклы через элементы в массиве, создавая два различных подзаголовка в зависимости от состояния отдельного объекта. В цикле, этом методе:
Обнаруживает указатели на удаленные объекты (использующий метод класса Handle isvalid
). 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