WedX - журнал о программировании и компьютерных науках

С New MyTestableMacro .Run — что он делает?

Я следую этому руководству от RubberduckVBA и наткнулся на этот фрагмент кода, но понятия не имею, что он на самом деле делает:

With New MyTestableMacro
    .Run dataServiceStub, wsServiceStub
End With

Я попытался найти "Новое ключевое слово в операторе With", а также несколько других вещей, но ничего не нашел об этом.

Это не код, который я видел за год работы с VBA...

Я также пытался создать класс с именем MyTestableMacro с помощью метода Run, который также не работал.

Чтобы было ясно, я хочу знать, что такое MyTestableMacro. Это класс, модуль, временный макрос? И находится ли внутри него метод/функция Run A?

25.04.2018

Ответы:


1

Концептуально это ничем не отличается от следующего кода:

Dim something As MyTestableMacro
Set something = New MyTestableMacro
With something
    ...
End With

Обратите внимание, что нам нужно было Dim переменную, а затем инициализировать ее ключевым словом New. Но мы можем вырезать 2 дополнительные строки, сжав их в одно выражение:

With New MyTestableMacro
    ...
End With

Что касается вашего другого вопроса - MyTestableMacro должен быть модулем класса. В противном случае вы бы вообще не смогли New это сделать. И Run обычно будет методом Public (может быть Sub или Function, учитывая синтаксис, используемый в вашем сообщении). Метод Private не сработает. Friend будет работать только для одного и того же проекта VBA, но очень редко можно увидеть метод, использующий Friend вместо Public или Private.

25.04.2018
  • Спасибо, это был именно тот ответ, который я искал. Я думал, что это как-то связано с вырезанием нескольких строк кода, но не был полностью в этом уверен. Вопрос класса на самом деле не был полезной информацией сейчас, когда я оглядываюсь на него. 25.04.2018
  • @AlfaBravo заставляет переменную блока With храниться самим блоком With; объект создается с ключевым словом New, его ссылка принадлежит блоку With, и когда выполнение достигает End With, объект уничтожается. Вы можете проверить это, поместив операторы Debug.Print в обработчики Class_Initialize и Class_Terminate модуля класса, например. Debug.Print "hello" в Class_Initialize, затем Debug.Print "goodbye" в Class_Terminate и затем Debug.Print "doing the work" в методе Run. 25.04.2018
  • @MathieuGuindon Спасибо, это еще одна полезная вещь, которую я узнал сегодня. 25.04.2018
  • @MathieuGuindon, не могли бы вы уточнить в своем руководстве, что MyTestableMacro должен быть модулем класса, как вы выразились? 26.06.2018
  • @ShawnV.Wilson Я бы хотел, за исключением того, что я не уверен, в какой части Что, если мы введем класс и переместим туда функциональность? и мы можем вытащить зависимости и выполнить модульное тестирование класса MyTestableMacro, неясного в этом... как вы предлагаете мне сделать это еще яснее? 26.06.2018
  • Измените предложение, чтобы сказать Теперь мы рассмотрим этот класс... 26.06.2018
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]