VBA 中的备忘录实现
我正在寻找 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);
}
我尝试转换的整个代码可在上面的维基百科链接中找到。
谢谢
I'm looking for a VBA implementation of the Memento pattern (GoF). I'm looking at converting the Java version from Wikipedia. It will be used for Undo/Redo functionality for an Excel add-in.
Specifically, I am having difficulty with the line:
return new Memento(state);
Or, to make it more specific, can someone rewrite this in VBA:
public Memento saveToMemento() {
//System.out.println("Originator: Saving to Memento.");
return new Memento(state);
}
The entire code that I am trying to convert is available at the Wikipedia link above.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Java 中的
return
关键字与VBA 中的return
关键字非常不同。在 VBA 中,return
与gosub
配合使用,作为改变过程内执行流程的一种方式。在 Java 中,
return
表示“从函数中退出”,并且返回适当类型的值(如您的示例中所示)或不返回任何内容(在void
函数的情况下) - Java 相当于 VBA 中的Sub
)。在您的示例中,它将返回一个
Memento
类型的对象。这必须是函数的返回类型或该返回类型的子类型。通过使用new
关键字(类似于 VBA 中的new
关键字)创建新对象。名为state
的对象作为参数传递给新对象的构造函数。在 VBA 中,您可以这样写:
其中
createMemento
是您编写的函数,用于创建适当的结构来保存备忘录信息The
return
keyword in Java is very different to thereturn
keyword in VBA. In VBA,return
is paired withgosub
as a way of altering the flow of execution within a procedure.In Java,
return
means "exit from function" and either returns a value of an appropriate type (as in your example) or returns nothing (in the case of avoid
function - Java equivalent ofSub
in VBA).In your example, it is going to return an object of type
Memento
. This must be either the return type of the function or a subtype of that return type. A new object is created through use of thenew
keyword (similar to thenew
keyword in VBA). The object calledstate
is passed to the constructor of the new object as a parameter.In VBA you could write this:
where
createMemento
is a function you have written to create an appropriate structure to hold the memento information