2011-09-11 11 views

risposta

17
while doWork() then 

dovrebbe fare il trucco

+14

Oppure, se siete disposti a scambiare un paio di byte per la leggibilità, penso 'continuare mentre DoWork()' sarebbe il modo più chiaro per scriverlo. –

+0

Io uso '(->)' come no-op, poiché è il più breve che ho trovato, quindi avrei fatto '(->) mentre doWork()'. –

+0

@Trevor Sono stupito di come il tuo suggerimento sia incredibilmente leggibile (sintatticamente) e sorprendentemente oscuro (semanticamente). Non capirò mai come funziona senza il commento di Aaron :) (Ma è un vero e proprio idioma e lo inserirò felicemente come risposta). – brandizzi

2

usando then è probabilmente la soluzione canonica in quanto si intende esplicitamente per separare la condizione dal (in questo caso vuoto) del corpo. In alternativa è possibile scrivere

while doWork() 
    ;# 

(la # mantiene la sintassi di vim evidenziazione da bandiera come un errore)

Mi piace anche la soluzione continue while doWork(), ma io consiglio vivamente contro qualsiasi altra forma di expression while doWork() citato nei commenti da quando questa è l'ultima dichiarazione di una funzione che diventerà un elenco costruttore:

_results = []; 
while (doWork()) { 
    _results.push(expression); 
} 
return _results;