Einzelnen Beitrag anzeigen
Alt 29.04.2011, 13:30   #18 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Wenn die letzte abgefragte Zahl nicht im Bereich ist, dann ist das Endergebnis false.


Hier ein leichter verständliches Beispiel:
Von den Soldaten S1, S2 und S3 einer Gruppe befinden sich S1 und S2 in einem Bereich.
Es soll mit waituntil abgefragt werden ob wenigstens einer der Soldaten im Bereich ist.

Falsche Abfrage ergibt false:
waituntil { {_x in [S1,S2]} forEach [S1,S2,S3] };

{_x=S1 in Bereich[S1,S2]} Ergebnis = true
{_x=S2 in Bereich[S1,S2]} Ergebnis = true
{_x=S3 in Bereich[S1,S2]} Ergebnis = false

Bei dieser Art der Abfrage wird als Rückgabewert das Ergebnis der letzen Abfrage genommen!

Korrekte Abfrage ergibt true:
waituntil { _a=false; { if (_x in [S1,S2]) then {_a=true} } foreach [S1,S2,S3]; _a };

Bei der falschen Abfrage kann auch das richtige Ergebnis rauskommen, aber nicht immer.
Vienna ist offline