Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Memento在VBA中的实现_Java_.net_Vba_Design Patterns_Memento - Fatal编程技术网

Java Memento在VBA中的实现

Java Memento在VBA中的实现,java,.net,vba,design-patterns,memento,Java,.net,Vba,Design Patterns,Memento,我正在寻找Memento模式(GoF)的VBA实现。我正在考虑转换Java版本。它将用于Excel加载项的撤消/重做功能 具体来说,我对这条线路有困难: return new Memento(state); 或者,更具体地说,是否有人可以在VBA中重写: public Memento saveToMemento() { //System.out.println("Originator: Saving to Memento."); return new Memento(state

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

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

return new Memento(state);
或者,更具体地说,是否有人可以在VBA中重写:

public Memento saveToMemento() {
    //System.out.println("Originator: Saving to Memento.");
    return new Memento(state);
}
我试图转换的全部代码都可以在上面的维基百科链接中找到


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

在Java中,
return
表示“退出函数”,或者返回适当类型的值(如您的示例中所示),或者不返回任何值(在VBA中的
void
函数-Java等价于
Sub

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

在VBA中,您可以编写以下内容:

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

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

您能更具体地说明您的问题是什么吗?
return
关键字的使用?使用
new
操作符?Dirk,我已经重新编写了这个问题并包含了新的信息,希望您现在能够理解我的问题所在。barrowc,我如何创建新对象的构造函数(作为参数),或者更具体地说,如何编写createMemento函数以模拟SaveToMento的Java代码?您可以在VBA中定义类,然后创建这些类的对象。VBA本身没有构造函数,但可以使用
Class\u Initialize()
初始化对象。不幸的是,您无法将参数传递给该
Sub
,因此必须调用单独的
Sub
来处理初始状态的设置。谢谢你,你的回答很有用。