widthConstrainedDataRepresentation

Класс: matlab.mixin.CustomCompactDisplayProvider
Пакет: matlab.mixin

Создайте компактное представление отображения на основе доступной ширины символов

Описание

[rep,num] = widthConstrainedDataRepresentation(obj,displayConfiguration,width) создает компактное представление отображения объектного массива obj это настроено к доступной ширине символов, с помощью метода конвертера строки, заданного классом obj. Метод возвращает представление и число элементов, включенное в представление в rep и num, соответственно. Чтобы создать представление, подходящее для отображения в контейнере, метод использует текущий контекст отображения как описано в displayConfiguration.

widthConstrainedDataRepresentation попытки создать представление простого текста путем подбора кривой как много элементов obj в доступной ширине символов как возможная. В зависимости от значения width, представление может включать данные всего или фрагмент obj элементы. Если width не является достаточно большим, чтобы соответствовать любым элементам массива, затем метод возвращает представление с помощью измерений массива и имени класса.

пример

[rep,num] = widthConstrainedDataRepresentation(obj,displayConfiguration,width,Name=Value) создает компактное представление отображения с помощью дополнительных опций, заданных одними или несколькими аргументами name-value.

Входные параметры

развернуть все

Объектный массив, чтобы отобразиться в виде объектного массива класса, выведенного из matlab.mixin.CustomCompactDisplayProvider.

Описание текущего контекста отображения в виде matlab.display.DisplayConfiguration объект.

Доступная ширина символов, чтобы отобразить объектный массив в виде положительного целочисленного скаляра.

Аргументы name-value

Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

Пример: rep = widthConstrainedDataRepresentation(obj,displayConfiguration,width,Annotation="My Object") создает ограниченное шириной представление obj это включает заданную аннотацию.

Текстовое представление данных в объектном массиве в виде массива строк с одинаковым числом строк как obj. Когда вы задаете этот аргумент, метод использует заданный массив строк вместо того, чтобы вызвать метод конвертера строки класса на объектном массиве.

Используйте этот аргумент, когда класс объектного массива не реализует метод конвертера строки или когда метод конвертера не создает массив строк, подходящий для использования в компактном сценарии отображения.

Описательный комментарий об объектном массиве в виде массива строк N-1, где N является количеством строк в obj. Метод добавляет заданную аннотацию к тексту, представляющему данные в объектном массиве.

Минимальное количество элементов объектного массива, чтобы включать в представление в виде положительного целочисленного скаляра. Если метод не может включать, по крайней мере, конкретное количество элементов, это возвращает DimensionsAndClassNameRepresentation объект с num обнулить.

Обрезать ли строковые скаляры в виде false или true. Используйте этот аргумент когда obj представлен как строковый скаляр (однострочное размещение) или вектор-столбец строковых скаляров (колоночное размещение), и вы хотите убедиться, что строковые скаляры отображены контейнером obj. Когда значением является true, метод обрезает строковые скаляры, при необходимости, так, чтобы они соответствовали в доступной ширине. Это заменяет удаленные символы от хвостов строковых скаляров с символом замещающего знака.

По умолчанию, widthConstrainedDataRepresentation не обрезает строковые скаляры. Если значением является false и строковый скаляр не соответствует в доступной ширине, метод возвращает DimensionsAndClassNameRepresentation объект с num обнулить.

Выходные аргументы

развернуть все

Компактное представление отображения объектного массива, возвращенного как matlab.display.PlainTextRepresentation или matlab.display.DimensionsAndClassNameRepresentation объект.

По умолчанию метод пытается представлять obj как PlainTextRepresentation объект. Это возвращает DimensionsAndClassNameRepresentation возразите только в этих ситуациях:

  • Доступная ширина символов не является достаточно большой, чтобы отобразить любые из данных в obj использование PlainTextRepresentation объект.

  • obj пустое значение.

  • obj должен использовать однострочное размещение отображения, но это не вектор-строка.

  • obj должен использовать колоночное размещение отображения, но это не матрица.

Число элементов включено в компактное представление отображения, возвращенное как неотрицательный целочисленный скаляр.

Примеры

развернуть все

Настройте компактное отображение своего объектного массива путем подбора кривой как можно большему количеству элементов массива в доступной ширине символов, и также определения аннотации, которая зависит от содержимого массива.

В вашей текущей папке создайте Weekdays класс перечисления путем разделения на подклассы matlab.mixin.CustomCompactDisplayProvider. Чтобы настроить компактное отображение для одной линии и колоночных размещений, закажите телефонный разговор с widthConstrainedDataRepresentation служебный метод в compactRepresentationForSingleLine и compactRepresentationForColumn методы, соответственно. Задайте Annotation аргумент значения имени так, чтобы MATLAB® отображает аннотацию для каждой строки объектного массива, который включает дни выходных дней.

classdef WeekDays < matlab.mixin.CustomCompactDisplayProvider
    enumeration
        Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
    end

    methods
        function rep = compactRepresentationForSingleLine(obj,displayConfiguration,width)
            [rep,~] = widthConstrainedDataRepresentation(obj,displayConfiguration,width, ...
                Annotation=annotation(obj));
        end
        function rep = compactRepresentationForColumn(obj,displayConfiguration,width)
            [rep,~] = widthConstrainedDataRepresentation(obj,displayConfiguration,width, ...
                Annotation=annotation(obj));
        end
        function res = annotation(obj)
            % Construct annotation as a column vector of strings
            numRows = size(obj,1);
            res = strings(numRows,1);
            for i = 1:numRows   % Add text for each row that includes weekend days
                currentRow = obj(i,:);
                if any(currentRow == WeekDays.Saturday) || any(currentRow == WeekDays.Sunday)
                    res(i) = "Includes Weekends";
                end
            end
        end
    end
end

В Командном окне создайте структуру с полем, которое содержит массив некоторых Weekdays объекты. MATLAB отображает все элементы массива в одной строке. Кроме того, потому что массив включает член перечисления WeekDays.Saturday, MATLAB отображает аннотацию.

s = struct("FreeLunchDays",[WeekDays.Monday WeekDays.Wednesday WeekDays.Friday WeekDays.Saturday])
s = 

  struct with fields:

    FreeLunchDays: [Monday    Wednesday    Friday    Saturday]  (Includes Weekends)

Создайте другой Weekdays массив со многими элементами, так, чтобы они не могли все быть отображены в одной строке. Когда вы присваиваете этот массив s.FreeLunchDays, MATLAB отображает как можно больше ведущих элементов массива и использует символ замещающего знака, чтобы представлять не использованные элементы.

days = repmat(WeekDays.Friday,1,52); 
s.FreeLunchDays = days
s = 

  struct with fields:

    FreeLunchDays: [Friday    Friday    Friday    Friday    Friday    Friday    Friday    Friday    …    ]

Теперь протестируйте пользовательское компактное отображение WeekDays объекты для колоночного размещения. Создайте таблицу T это содержит WeekDays массив, включающий несколько элементов. Поскольку доступная ширина символов является достаточно большой, MATLAB отображает все элементы массива в Командном окне. Кроме того, потому что вторая строка массива включает член перечисления WeekDays.Saturday, MATLAB отображает аннотацию для той строки.

Location = ["Boston"; "New York"];
FreeLunchDays = [WeekDays.Wednesday WeekDays.Friday; WeekDays.Thursday WeekDays.Saturday];
T = table(Location,FreeLunchDays)
T =

  2×2 table

     Location                   FreeLunchDays               
    __________    __________________________________________

    "Boston"      Wednesday    Friday                       
    "New York"    Thursday     Saturday  (Includes Weekends) 

Обновите FreeLunchDays переменная с помощью WeekDays массив со многими элементами. MATLAB отображает как можно больше ведущих элементов массива и использует символ замещающего знака, чтобы представлять не использованные элементы.

T.FreeLunchDays = repmat(WeekDays.Friday,2,52)
T =

  2×2 table

     Location                     FreeLunchDays                 
    __________    ______________________________________________

    "Boston"      Friday    Friday    Friday    Friday    …    
    "New York"    Friday    Friday    Friday    Friday    …    

Советы

Введенный в R2021b
Для просмотра документации необходимо авторизоваться на сайте