Sto cercando un modo intelligente per incrementare e quindi decrementare una variabile contatore. Voglio che la variabile contatore inizi a un valore basso e incrementa, verso un valore più alto. Una volta raggiunto il valore più alto, il contatore diminuisce fino a raggiungere il valore più basso. Una volta raggiunto il valore più basso, il contatore incrementa nuovamente il valore più alto ... Penso che tu abbia capito il punto.Come possiamo incrementare e quindi decrementare un contatore senza condizionali?
Sto lavorando su un un canvas animation dove mi piacerebbe di impiegare un po 'di furbizia, senza l'utilizzo di if
o altri test condizionali:
Ecco la logica condizionale che gestisce la variabile contatore:
incrementing = true
foo = ->
length += 1 if incrementing
length -= 1 if not incrementing
incrementing = false if length > 100
incrementing = true if length < 1
Inizialmente, pensavo di poter usare il modulo. Tuttavia, la divisione modulo reimposta solo il contatore sul valore inferiore - non decrementa il contatore una volta raggiunto il valore massimo.
0 % 10 = 0
1 % 10 = 1
2 % 10 = 2
3 % 10 = 3
4 % 10 = 4
5 % 10 = 5
6 % 10 = 6
7 % 10 = 7
8 % 10 = 8
9 % 10 = 9
10 % 10 = 0
11 % 10 = 1
12 % 10 = 2
13 % 10 = 3
Sono sicuro che ci deve essere un modo per farlo senza usare test condizionali. Supponendo un valore inferiore di 0 e un valore massimo di 10, il metodo dovrebbe produrre quanto segue.
? = 0
? = 1
? = 2
? = 3
? = 4
? = 5
? = 6
? = 7
? = 8
? = 9
? = 8
? = 7
? = 6
? = 5
'+ 1' per aver bisogno di una soluzione per un non-problema totale, puramente per rendere il codice più bello. Questo è il motivo per cui apprendiamo CoffeeScript. –