Main Content

非アクティブなプロパティの非表示

アクティブな System object™ プロパティのみを表示するには、isInactivePropertyImpl メソッドを使用します。このメソッドは、プロパティが非アクティブかどうかを指定します。"非アクティブなプロパティ" は、他のプロパティの値があるために、System object に影響しないプロパティです。isInactiveProperty メソッドをプロパティに渡し、このメソッドが true を返すと、そのプロパティは非アクティブであり、関数 disp の呼び出し時に表示されません。

非アクティブなプロパティの指定

この例では、isInactiveProperty メソッドを使用して、依存プロパティの値を確認します。この System object の UseRandomInitialValue が true に設定されている場合、InitialValue プロパティは関係ありません。この isInactiveProperty メソッドはその状況を確認し、UseRandomInitialValuetrue の場合は、true を返して、非アクティブな InitialValue プロパティを非表示にします。

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

非アクティブなプロパティ メソッドを使用した完全なクラス定義ファイル

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

参考