Wie schneidet man in scala ein Verständnis ab (ausbrechen)?

7

Ich habe einen Code, der wie folgt codiert:

%Vor%

Wo die Bedingung für einige Elemente gilt und dann für alle anderen falsch wird.

Leider funktioniert das nicht (auch wenn ich die Leistung ignoriere), weil mein elements ein unendlicher Iterator ist.

Gibt es eine Möglichkeit, eine "Pause" in einem Verständnis zu verwenden, damit es keine Elemente mehr gibt, wenn eine bestimmte Bedingung erfüllt ist? Was wäre sonst die scala-idiomatische Methode, mein e2 zu berechnen?

    
jsalvata 28.11.2012, 01:38
quelle

5 Antworten

8
%Vor%

Bearbeiten, noch eine Demonstration:

%Vor%     
som-snytt 28.11.2012, 05:44
quelle
17

Sie könnten mit faulen Ansatz gehen:

%Vor%

Sie berechnen also teurFunction on demand, und wenn bei einem Schritt false ist, werden Sie keine unnötige Arbeit verrichten.

    
om-nom-nom 28.11.2012 02:02
quelle
3

Sie können einfach takeWhile verwenden:

%Vor%     
Jakozaur 28.11.2012 01:47
quelle
0

Diese Lösung gefunden:

%Vor%

Ein besserer, jemand?

    
jsalvata 28.11.2012 01:58
quelle
0

Hier ist meine Idee: Wenn die Elemente bereits ein Lazy Container sind (wie Stream, Iterator):

%Vor%

Oder nicht:

%Vor%     
Eastsun 28.11.2012 02:30
quelle