Domanda

Valutazioni dinamiche in un ascoltatore chiave

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(){
        // ...
    }
}

Questo lambda dovrebbe attendere su ogni riga

keyUpper.RegisterEvaluator(key => 
    {
    if (key == Key.A)
        if (key == Key.W)
            if (key == Key.A)
                return true;
    }
);
  • IE il codice client fornirebbe una serie di valutazioni sullo stesso key argomento con l'aspettativa che ogni linea di valutazione sarebbe attenta in modo che Someresponse () venga invocato dopo una sequenza di eventi keyup di 1: a 2: w 3:
  • Ovviamente al momento non accadrà mai perché il metodo viene eseguito fino alla fine e key == Key.W non sarà mai vero
  • Potrebbe non essere possibile, ma esiste un modo per far ritornare automaticamente il metodo dalla riga successiva se si valuta a false ma restituiti fino a quando quella linea non valuta il vero, seguendolo fino alla riga successivamente, e al linea dopo fino alla fine del metodo?
  • IE potrebbe esserci un modo semplice per fornire espressioni lambda attenti di questo tipo?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top