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

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

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

Используйте статические данные, чтобы задать счетчики, используемые экземплярами класса или другими данными, который является общим для все объекты класса. В отличие от данных экземпляра, статические данные не отличаются от одного объекта до другого. 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®.

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

|

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

Больше о

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