-1
はこれを考えますそして米国に)この方法で値を使用する:。のJavaループアルゴリズム
(Events.valueOf(EventsList.get(0)))上(States.valueOf(EventsList.get(0))にトランスそれ(
。...
しかし、イテレートするパターンがわからない。
私は本当に助言に感謝します。
は
が//////////////////////////// UPDATEDありがとう/////////// @Dukelingアドバイス
public Map<States, List<Events>> transitMap;
public Map<Events, States> toMap;
void transitCaller(States initialState, Events events)
{
transitCallerHelper(on(events).to(initialState),
transitMap.get(initialState));
}
Transition transitCallerHelper(Transition toResult, List<Events> events)
{
List<Transition> transitCalls = new ArrayList<Transition>();
for (Events e: events)
{
States s = toMap.get(e);
if (isFinishEvent(e)) // or isFinishState(s)
transitCalls.add(on(e).finish(s));
else
{
events = (s != null ? transitMap.get(s) : null);
if (events == null)
transitCalls.add(on(e).to(s));
else
transitCalls.add(transitCallerHelper(on(e).to(s), events));
}
}
return toResult.transit(transitCalls.get(0));
}
あなたの貴重な答えをありがとう、申し訳ありません私は質問があります: "from"は "on"とfinishの違いがあり、両方とも "Transaction"です。再帰的メソッドを使用する必要があるため、 ? https://pastebin.com/fewi8R0F(デモ):https://github.com/Beh01der/EasyFlow。このコードを申請しようとしています。ありがとう。私は修正を加えましたが、動作しません。変更された/拡張された質問をご覧ください。 – user1069571
上記のコメントを参照してください、ありがとう – user1069571
@ user1069571しかし、それはまた 'トランジット'メソッドを持っていますか?その場合、そのメソッドを両方のクラスに実装する 'interface'に入れることができます。再帰メソッドが気にするのは、 'transit'メソッドしか持たないので、このメソッドを再帰メソッドで' ReturnType'の代わりに使用することができます。または 'transitCallerHelper'メソッドの大部分を' List 'を返す別のメソッド(' getTransitArgs')に移動し、 'from(initialState).transit(getTransitArgs(transitMap.get(initialState)))を実行することもできます。 ; '' transitCaller'の中で。 –
Dukeling