Внедрение Memento в VBA - PullRequest
       31

Внедрение Memento в VBA

0 голосов
/ 19 января 2010

Я ищу VBA-реализацию шаблона Memento (GoF).Я смотрю на преобразование версии Java из Википедии .Он будет использоваться для функций отмены / повтора для надстройки Excel.

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

return new Memento(state);

Или, чтобы сделать ее более конкретной,кто-то переписывает это в VBA:

public Memento saveToMemento() {
    //System.out.println("Originator: Saving to Memento.");
    return new Memento(state);
}

Весь код, который я пытаюсь преобразовать, доступен по ссылке в Википедии выше.

Спасибо

1 Ответ

1 голос
/ 19 января 2010

Ключевое слово return в Java очень отличается от ключевого слова return в VBA. В VBA return в паре с gosub как способ изменения потока выполнения в процедуре.

В Java return означает «выход из функции» и либо возвращает значение соответствующего типа (как в вашем примере), либо ничего не возвращает (в случае void функции - Java эквивалент Sub в VBA).

В вашем примере он вернет объект типа Memento. Это должен быть либо тип возвращаемого значения функции, либо подтип этого возвращаемого типа. Новый объект создается с использованием ключевого слова new (аналогично ключевому слову new в VBA). Объект с именем state передается конструктору нового объекта в качестве параметра.

В VBA вы могли бы написать это:

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

, где createMemento - это функция, которую вы написали для создания соответствующей структуры для хранения информации сувенира

...