0

我正在寻找 Memento 模式 (GoF) 的 VBA 实现。我正在考虑从 Wikipedia转换 Java 版本。它将用于 Excel 加载项的撤消/重做功能。

具体来说,我对这条线有困难:

return new Memento(state);

或者,为了更具体,有人可以在 VBA 中重写它:

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

我试图转换的整个代码都可以在上面的 Wikipedia 链接中找到。

谢谢

4

1 回答 1

1

Java 中的关键字与 VBA中的关键字return非常不同。return在 VBA 中,与作为更改过程中执行流程的一种方式return配对。gosub

在 Java 中,return表示“从函数退出”,要么返回适当类型的值(如您的示例中所示),要么不返回任何内容(在void函数的情况下 - Java 相当于SubVBA 中的值)。

在您的示例中,它将返回一个 type 的对象Memento。这必须是函数的返回类型或该返回类型的子类型。通过使用new关键字(类似于newVBA 中的关键字)创建一个新对象。调用state的对象作为参数传递给新对象的构造函数。

在 VBA 中你可以这样写:

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

您编写的函数在哪里createMemento创建一个适当的结构来保存纪念品信息

于 2010-01-19T00:27:12.887 回答