Статические данные

Что такое статические данные

Статические данные относятся к данным, что все объекты доли класса и что можно изменить после создания.

Используйте статические данные, чтобы задать счетчики, используемые экземплярами класса или другими данными, которые являются общими для все объекты класса. В отличие от данных об экземпляре, статические данные не варьируются от одного объекта до другого. MATLAB® обеспечивает несколько способов задать статические данные, в зависимости от ваших требований.

Статическая переменная

Классы могут использовать персистентную переменную, чтобы хранить статические данные. Задайте статический метод или локальную функцию, в которой вы создаете персистентную переменную. Метод или функция обеспечивают доступ к этой переменной. Используйте этот метод, когда это необходимо, чтобы сохранить одну или две переменные.

Сохранение объекта класса, задающего персистентную переменную, не сохраняет статические данные, сопоставленные с классом. Чтобы сохранить ваши статические данные в объекте или задать более обширные данные, используют статический метод объекта данных Статический Объект данных

Реализация

StoreData класс задает статический метод, который объявляет персистентную переменную Var. setgetVar метод обеспечивает набор, и получите доступ к данным в персистентной переменной. Поскольку setgetVar метод имеет открытый доступ, можно установить и хранить данные в персистентной переменной глобально. Управляйте осциллографом доступа путем установки метода Access атрибут.

classdef StoreData
   methods (Static)
      function out = setgetVar(data)
         persistent Var;
         if nargin
            Var = data;
         end
         out = Var;
      end
   end
end

Установите значение переменной путем вызова setgetVar с входным параметром. Метод присваивает входное значение персистентной переменной:

StoreData.setgetVar(10);

Получите значение переменной путем вызова setgetVar без входного параметра:

a = StoreData.setgetVar
a =

    10

Очистите персистентную переменную путем вызова clear на StoreData класс:

clear StoreData
a = StoreData.setgetVar
a =

     []

Добавьте метод как setgetVar к любому классу, в котором вы хотите поведение статического свойства.

Статический объект данных

Чтобы хранить более обширные данные, задайте класс Handle с публичными свойствами. Присвойте объект класса к постоянному свойству класса, который использует статические данные. Этот метод полезен, когда это необходимо, для:

  • Добавьте больше свойств или методов, которые изменяют данные.

  • Сохраните объекты класса данных и перезагрузите статические данные.

Реализация

SharedData класс является классом Handle, который позволяет вам сослаться на те же данные объектов от нескольких переменных указателя:

classdef SharedData < handle
   properties 
      Data1
      Data2
   end
end

UseData класс является заглушкой класса, который использует данные, хранимые в SharedData класс. UseData класс хранит указатель на SharedData объект в постоянном свойстве.

classdef UseData
   properties (Constant)
      Data = SharedData
   end
   % Class code here
end

Data свойство содержит указатель SharedData объект. MATLAB создает SharedData возразите при загрузке UseData класс. Все впоследствии созданные экземпляры UseData класс относится к тому же SharedData объект.

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

h = UseData.Data
h = 

  SharedData with properties:

    Data1: []
    Data2: []

Используйте указатель на SharedData возразите, чтобы присвоить данные значениям свойств:

h.Data1 = 'MyData1';
h.Data2 = 'MyData2';

Каждый экземпляр UseData класс относится к тому же объекту указателя:

a1 = UseData;
a2 = UseData;

Сошлитесь на данные с помощью переменной объекта:

a1.Data.Data1
ans =

MyData1

Присвойте новое значение свойствам в SharedData объект:

a1.Data.Data1 = rand(3);

Все новые и существующие объекты UseData доля класса тот же SharedData объект. a2 теперь имеет rand(3) данные, которые были присвоены a1 на предыдущем шаге:

a2.Data.Data1
ans =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

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

clear a1 a2
clear UseData

Постоянные данные

Чтобы сохранить постоянные значения, которые не изменяются, присвойте данные постоянному свойству. Все экземпляры класса совместно используют то же значение для того свойства. Управляйте осциллографом доступа к постоянным свойствам путем установки свойства Access атрибут.

Единственный способ изменить значение постоянного свойства состоит в том, чтобы изменить определение класса. Используйте постоянные свойства как общедоступные итоговые статические поля на Java®.

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

|

Связанные примеры

Больше о