2

キー リスナーでの動的評価

public class KeyUpper {
    Func<Key, bool> _evaluate;

    public void RegisterEvaluator(Func<Key, bool> evaluate){
        _evaluate = evaluate;
    }

    public void KeyUp(object sender, KeyEventArgs e){
        if (_evaluate(e.KeyCode))
            SomeResponse();
    }

    public void SomeResponse(){
        // ...
    }
}

この Lambda は各行で待機する必要があります

keyUpper.RegisterEvaluator(key => 
    {
    if (key == Key.A)
        if (key == Key.W)
            if (key == Key.A)
                return true;
    }
);
  • keyつまり、クライアント コードは、1:A 2:W 3:A の一連のキーアップ イベントの後に SomeResponse() が呼び出されるように、評価の各行が待機されることを期待して、同じ引数で一連の評価を提供します。
  • メソッドは最後まで実行され、key == Key.W真になることはないため、明らかに現時点では決して起こりません。
  • それは不可能かもしれませんが、メソッド呼び出しが false と評価された場合は次の行から自動的に戻り、その行が true と評価されるまでそれに戻り、その後の行に続く方法はありますか?その後、メソッドの最後まで行?
  • つまり、この種の待機可能なラムダ式を提供する簡単な方法があるでしょうか?
4

1 に答える 1