VBA 中的备忘录实现

发布于 2024-08-18 11:10:04 字数 488 浏览 3 评论 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);
}

我尝试转换的整个代码可在上面的维基百科链接中找到。

谢谢

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九命猫 2024-08-25 11:10:04

Java 中的return 关键字与VBA 中的return 关键字非常不同。在 VBA 中,returngosub 配合使用,作为改变过程内执行流程的一种方式。

在 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 是您编写的函数,用于创建适当的结构来保存备忘录信息

The return keyword in Java is very different to the return keyword in VBA. In VBA, return is paired with gosub 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 a void function - Java equivalent of Sub 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 the new keyword (similar to the new keyword in VBA). The object called state is passed to the constructor of the new object as a parameter.

In VBA you could write this:

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

where createMemento is a function you have written to create an appropriate structure to hold the memento information

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文