0

Memento パターン (GoF) の VBA 実装を探しています。Java バージョンを Wikipedia から変換することを検討しています。Excel アドインの元に戻す/やり直し機能に使用されます。

具体的には、次の行に問題があります。

return new Memento(state);

または、より具体的にするために、誰かがVBAでこれを書き直すことができます:

public Memento saveToMemento() {
    //System.out.println("Originator: Saving to Memento.");
    return new Memento(state);
}

変換しようとしているコード全体は、上記のウィキペディアのリンクから入手できます。

ありがとう

4

1 に答える 1

1

returnJava のキーワードは、VBA のキーワードとは大きく異なりますreturn。VBA では、プロシージャ内の実行の流れを変更する方法としてreturnとペアになっています。gosub

Javaでは、return「関数からの終了」を意味し、適切なタイプの値を返すか(例のように)、何も返しません(void関数の場合-VBAに相当するJava Sub)。

あなたの例では、 type のオブジェクトを返しますMemento。これは、関数の戻り値の型か、その戻り値の型のサブタイプである必要があります。キーワードを使用して新しいオブジェクトが作成されます( VBAnewのキーワードに似ています)。new呼び出されstateたオブジェクトは、新しいオブジェクトのコンストラクターにパラメーターとして渡されます。

VBA では、次のように記述できます。

Function saveToMemento(state As String) As Variant

saveToMemento = createMemento(state)

End Function

createMemento、記念品情報を保持するための適切な構造を作成するために作成した関数です。

于 2010-01-19T00:27:12.887 に答える