我正在寻找Memento模式(GoF)的VBA实现。我正在考虑转换Java版本from Wikipedia。它将用于Excel加载项的撤消/重做功能。
具体来说,我对这条线路有困难:
return new Memento(state);
或者,为了使其更具体,有人可以在VBA中重写:
public Memento saveToMemento() {
//System.out.println("Originator: Saving to Memento.");
return new Memento(state);
}
我想要转换的整个代码可以在上面的Wikipedia链接中找到。
由于
答案 0 :(得分:1)
Java中的return
关键字与VBA中的return
关键字非常不同。在VBA中,return
与gosub
配对,作为改变过程中执行流程的一种方式。
在Java中,return
表示“退出函数”并返回适当类型的值(如示例所示)或不返回任何内容(在void
函数的情况下 - Java等价物在VBA中Sub
。)
在您的示例中,它将返回类型为Memento
的对象。这必须是函数的返回类型或该返回类型的子类型。通过使用new
关键字(类似于VBA中的new
关键字)创建新对象。名为state
的对象作为参数传递给新对象的构造函数。
在VBA中你可以这样写:
Function saveToMemento(state As String) As Variant
saveToMemento = createMemento(state)
End Function
其中createMemento
是您编写的用于创建适当结构以保存纪念品信息的函数