• Регистрация
alextip
alextip+24.13
н/д
  • Написать
  • Подписаться

Разница между private property и public property в appdesigner

26.05.2020

Здравствуйте. В главном окне многооконного приложения я прописал публичное свойство.

Например:

properties (Access = public)
x1="текст"; % Description
end

Мне нужно получить доступ к этой переменной в окне диалога. Но в диалоговом окне синтаксис app.x1 и просто x1 не работает и сообщает о несуществующей переменой. Я честно говоря, думал, что по аналогии с публичной функцией смогу это сделать.

Проблему удалось решить только путем передачи нужной переменной во входные параметры дилогового окна (App Input Arguments). Возникает вопрос. Чем тогда публичная переменная отличается от частной, для чего она нужна? Или я где-то ошибся?

Теги

    26.05.2020

    Ответы

    • Павел Рословец
      Павел Рословец +239.28
      26.05.2020 15:13

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

      Пример:

      В приложении AppWithPubProp есть публичное свойство PubProp1. Вот код, чтобы к нему обратиться:

      app = AppWithPubProp % создаем объект приложения, при этом оно открывается
      p = app.PubProp1 % считываем значение свойства
      app.PubProp1 = 2 % обновляем значение
      • alextip
        alextip+24.13
        26.05.2020 15:27

        Спасибо.

        Надо будет попробовать, а то в справке ничего толкового найти не удалось

        • aBoomest
          aBoomest+424.22
          26.05.2020 22:05

          а то в справке ничего толкового найти не удалось

          как так? Информационная поддержка matlab одна из самых обширных. (По-рекламски прозвучало. Пофиг, раз правда, не буду корректировать.)

          • alextip
            alextip+24.13
            27.05.2020 21:27

            как так? Информационная поддержка matlab одна из самых обширных. (По-рекламски прозвучало. Пофиг, раз правда, не буду корректировать.)

            Может я невнимательный человек, но по интересующему меня вопросу на приведенной Вами странице ничего не нашел.

            Если по существу, то самый простой найденный мной метод - использовать в диалоговом окне публичную переменную через переменную CallingApp, в которой хранится объект вызывающего (главного) приложения.

            Получается примерно так

            app.CallingApp.PublicProp

            • aBoomest
              aBoomest+424.22
              29.05.2020 07:38

              По ссылке:

              Абзац "Использование класса".
              Строчка два: "Создайте объект класса."

              Об этом говорил коллега Павел Рословец.

              PS: Начал писать ответ, когда ответа от Павла Рословеца (прошу прощения если не верно употребил родительный падеж для Вашей фамилии) еще не было. Так-то по идее и смысла небыло в моем посте)))

              • alextip
                alextip+24.13
                31.05.2020 12:43

                Спасибо, проблема то решена в принципе, но пока я не слишком силен в программировании чтоб сразу перейти от общих построений классов и т.д. к практике. Поэтому Ваш пост не сильно помог.

                • aBoomest
                  aBoomest+424.22
                  31.05.2020 20:54

                  Ок. Это главное.