Hide Inactive Properties

Чтобы отобразить только активную Систему object™ свойства, используйте метод isInactivePropertyImpl. Этот метод задает, неактивно ли свойство. Неактивное свойство является свойством, которое не влияет на Системный объект из-за значения других свойств. Когда вы передаете метод isInactiveProperty, свойство и метод возвращают true, затем то свойство неактивно и не отображается, когда функция disp вызвана.

Определение неактивного свойства

Этот пример использует метод isInactiveProperty, чтобы проверить значение подчиненное свойство. Для этого Системного объекта свойство InitialValue не релевантно если UseRandomInitialValue, свойство установлено в верный. Этот метод isInactiveProperty проверяет на ту ситуацию и если UseRandomInitialValue является true, возвращает true, чтобы скрыть неактивное свойство InitialValue.

methods (Access = protected)
  function flag = isInactivePropertyImpl(obj,propertyName)
    if strcmp(propertyName,'InitialValue')
      flag = obj.UseRandomInitialValue;
    else
      flag = false;
    end
  end
end

Полный файл определения класса с методом Inactive Properties

classdef Counter < matlab.System
  % Counter Increment a counter
  
  % These properties are nontunable. They cannot be changed
  % after the setup method has been called or when the
  % object is running.
  properties (Nontunable)
    % Allow the user to set the initial value
    UseRandomInitialValue = true
    InitialValue = 0
  end
  
  % The private count variable, which is tunable by default
  properties (Access = private)
    pCount
  end
  
  methods (Access = protected)
    % Increment the counter and return its value 
    % as an output
    function c = stepImpl(obj)
      obj.pCount = obj.pCount + 1;
      c = obj.pCount;
    end

    % Reset the counter to either a random value or the initial
    % value.
    function resetImpl(obj)
      if obj.UseRandomInitialValue
        obj.pCount = rand();
      else
        obj.pCount = obj.InitialValue;
      end
    end

    % This method controls visibility of the object's properties
    function flag = isInactivePropertyImpl(obj,propertyName)
      if strcmp(propertyName,'InitialValue')
        flag = obj.UseRandomInitialValue;
      else
        flag = false;
      end
    end
  end
end

Смотрите также

Была ли эта тема полезной?