首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA中的Memento实现

VBA中的Memento实现
EN

Stack Overflow用户
提问于 2010-01-19 06:51:30
回答 1查看 479关注 0票数 0

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

具体地说,我在这行遇到了困难:

代码语言:javascript
复制
return new Memento(state);

或者,更具体地说,是否有人可以在VBA中重写此代码:

代码语言:javascript
复制
public Memento saveToMemento() {
    //System.out.println("Originator: Saving to Memento.");
    return new Memento(state);
}

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-01-19 08:27:13

Java中的return关键字与VBA中的return关键字有很大的不同。在VBA中,returngosub配合使用,可以改变过程中的执行流程。

在Java语言中,return的意思是“从函数中退出”,它要么返回适当类型的值(如您的示例所示),要么什么也不返回(对于void函数- Java中的Sub等价物)。

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

在VBA中,你可以这样写:

代码语言:javascript
复制
Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

其中,createMemento是您编写的一个函数,用于创建适当的结构来保存记忆信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2089800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档