findobj

Класс: указатель

Поиск указателя объектов

Синтаксис

Hmatch = findobj(H)
Hmatch = findobj(H,property,value,...,property,value)
Hmatch = findobj(H,'-not',property,value)
Hmatch = findobj(H,'-regexp',property,expression)
Hmatch = findobj(H,property,value,logicaloperator,property,value)
Hmatch = findobj(H,'-function',fh)
Hmatch = findobj(H,'-function',property,fh)
Hmatch = findobj(H,'-class',class)
Hmatch = findobj(H,'-isa',class)
Hmatch = findobj(H,'-property',property)
Hmatch = findobj(H,'-method',methodname)
Hmatch = findobj(H,'-event',eventname)
Hmatch = findobj(H,'-depth',d,___)

Описание

Hmatch = findobj(H) возвращает объекты, перечисленные в H и всех их потомков.

Hmatch = findobj(H,property,value,...,property,value) находит handle объекты, которые имеют заданный набор свойств к заданному значению.

Hmatch = findobj(H,'-not',property,value) инвертирует выражение в следующем property value пара. То есть найти объекты, заданное свойство которых не равно value.

Hmatch = findobj(H,'-regexp',property,expression) использует регулярное выражение, заданное в expression для поиска свойств с определенными значениями. Не все классы поддерживали использование регулярного выражения для поиска значений свойств.

Hmatch = findobj(H,property,value,logicaloperator,property,value) применяет логический оператор к парам имя/значение. Поддерживаемые логические операторы включают:

  • '-or'

  • '-and' (по умолчанию, если вы не задаете оператор)

  • '-xor'

Hmatch = findobj(H,'-function',fh) вызывает указатель на функцию fh на объектах в H и возвращает объекты, для которых возвращается функция true.

Hmatch = findobj(H,'-function',property,fh) вызывает указатель на функцию fh от значения заданного свойства для объектов в H и возвращает объекты, для которых возвращается функция true. Функция должна вернуть скалярное логическое значение.

Hmatch = findobj(H,'-class',class) находит все объекты, принадлежащие указанному классу.

Hmatch = findobj(H,'-isa',class) находит все объекты, принадлежащие указанному классу.

Hmatch = findobj(H,'-property',property) находит все объекты в H имеющий именованное свойство.

Hmatch = findobj(H,'-method',methodname) находит объекты с заданным именем метода.

Hmatch = findobj(H,'-event',eventname) находит объекты с заданным именем события.

Hmatch = findobj(H,'-depth',d,___) задает, сколько уровней в иерархиях образцов под объектами в H для поиска.

Задайте все -options как векторы символов или строковые скаляры.

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

расширить все

Объекты для поиска, заданные как массив указателей на объекты. Если вы не задаете '-depth' опция, findobj выполняет поиск объектов в массиве входа H и дочерние объекты в иерархии образцов.

Имя свойства, заданное как текст в кавычках с учетом регистра.

Типы данных: char | string

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

Типы данных: char | string

Значение свойства, заданное как значение или MATLAB® выражение.

Имя метода, заданное как текст с кавычками с учетом регистра.

Типы данных: char | string

Имя события, заданное как текст в кавычках с учетом регистра.

Типы данных: char | string

Глубина поиска, заданная как целое число, указывающее количество уровней ниже любого заданного объекта в вход массиве H.

  • d = n - Поиск по n уровни иерархии ниже каждого объекта в H

  • d = 0 - Поиск только на том же уровне, что и объекты в H.

  • d = inf - Поиск по всем уровням ниже объектов в H. Это значение по умолчанию.

Указатель на функцию, задающий функцию, которая оценивается для каждого объекта в вход массиве H. Эта функция должна вернуть скалярное, логическое значение, указывающее, существует ли соответствие (true) или нет (false).

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

расширить все

Объекты, найденные поиском, возвращенные как массив указателей.

Признаки

Accesspublic

Чтобы узнать об атрибутах методов, см. «Атрибуты метода».

Примеры

Объект с определенным значением свойства

Найдите объект с определенным значением свойства. Учитывая handle класс, BasicHandle:

classdef BasicHandle < handle
   properties
      Prop1
   end
   methods
      function obj = BasicHandle(val)
         if nargin > 0
            obj.Prop1 = val;
         end
      end
   end
end

Создайте массив BasicHandle объекты:

h(1) = BasicHandle(7);
h(2) = BasicHandle(11);
h(3) = BasicHandle(27);

Найдите указатель на объект, чей Prop1 свойство имеет значение 7:

h7 = findobj(h,'Prop1',7);
h7.Prop1
ans =

     7

Объект с определенным именем свойства

Найдите объект с определенным динамическим свойством. Учитывая button класс:

classdef button < dynamicprops
   properties
      UiHandle
   end
   methods
      function obj = button(pos)
         if nargin > 0
            if length(pos) == 4
               obj.UiHandle = uicontrol('Position',pos,...
                'Style','pushbutton');
            else
               error('Improper position')
            end
         end
      end     
   end   
end

Создайте массив объектов, только один элемент которого задает динамическое свойство. Использование findobj для получения указателя на объект с именем динамического свойства ButtonCoord:

b(1) = button([20 40 80 20]);
addprop(b(1),'ButtonCoord');
b(1).ButtonCoord = [2,3];
b(2) = button([120 40 80 20]);
b(3) = button([220 40 80 20]);

h =  findobj(b,'-property','ButtonCoord');
h.ButtonCoord
ans =

     2     3

Поиск объектов с использованием регулярных выражений

Поиск объектов на основе значения свойств объектов с помощью регулярных выражений. В то время как findobj имеет -regexp опции, не все классы поддерживают эту опцию. Этот пример использует -function опция использования регулярного выражения из функции в качестве альтернативы -regexp опция.

Этот класс задает статический метод, который создает объектный массив. Каждый объект имеет Name свойство, которое содержит символ, представляющий номер элемента массива.

classdef FindRegExpr < handle
    properties
        Name
    end
    methods (Static)
        function b = regXArray
            b = FindRegExpr.empty(0,50);
            for i = 1:50
                b(i).Name = sprintf('%d',i);
            end
        end
    end
end
A = FindRegExpr.regXArray;
a = 

  1×50 FindRegExpr array with properties:

    Name

Найдите объекты, чьи Name свойство содержит вектор символов, начинающийся с символа '1'.

subArray = findobj(a, '-function', 'Name', @(x) ~isempty(regexp(x, '^1\d*')));
subArray = 

  11×1 testRegExpr array with properties:

    Name

Совет

  • findobj имеет доступ только к публичным представителям.

  • Если совпадений нет, findobj возвращает пустой массив того же класса, что и входной массив H.

  • Приоритет логического оператора соответствует правилам приоритета MATLAB. Для получения дополнительной информации см. раздел Приоритет операторов.

  • Управляйте приоритетом путем группировки в массивах ячеек

См. также

Введенный в R2008a