Silente:
Ma ragazzi, domanda
analogWrite (lampeggio, (retro*255));
Va bene?
Se retro è bool si, se è byte o int o long o ecc devi essere certo che i possibili valori assegnati siano solo o zero o uno.
In quanto a leggibilità comunque è certamente meglio la soluzione di Guglielmo
Cia' dai aggiungiamo un suggerimento allo 'aiutatemi ad aiutarvi'
L'operatore ternario è sconsigliato.
UNDICESIMO COMANDAMENTO
Non commetterai terniarizzazione!
Non col tuo pc ne con la tua tastiera
Non col pc di altri ne con la tastiera di altri
Non col tuo IDE ne con lo IDE del tuo vicino
Concordo che il ternario è veramente poco leggibile, soprattutto se la condizione di test non è secca (Es. variabile bool) c'è e a qualcosa serve, come il goto... ma è meglio lasciarlo a quel qualcosa
Guarda, io mi sto scrivendo, a tempo perso delle macro di tastiera, tipo quelle di Autoit nella finestra
E per la if mi mette anche la else con le due graffe su due linee differenti
Basta come indice di quanto sono kosher?
Edit rispondevo a fabpolli
Silente:
Vero, grazie della correzione, non ci avevo pensato
analogWrite (lampeggio, ((retro==1)*255));
Poi noni ricordo mai, analogWrite va fino a 255 o 511?
Sbagliato, ritenta
Prova a pensare che retro (non di tipo bool altrimenti non serve) possa valere:
0
1
123
e tu vuoi ottenere o zero o 255
Premesso che non mi è mai piaciuto il ternario e che se di fatto non fornisce praticamente alcun vantaggio in termini di dimensione o velocità del codice (quindi a cosa serve?), volendo proprio fare qualcosa di apparentemente più compatto in questo caso farei:
analogWrite(lampeggio, (retro>0)*255);
oppure, meglio, farei "bool retro" (non so se sia così) e:
Urca, pensavo fosse utile invece....
Nei miei codici ho sempre fatto degli if-else, e il ternario pensavo migliorasse,invece effettivamente complica....
manolomao:
Nei miei codici ho sempre fatto degli if-else, e il ternario pensavo migliorasse,invece effettivamente complica....
... come ti ho già scritto, a livello "risultato finale", né semplifica, né complica ... il compilatore ottimizza comunque come crede meglio, comunque tu scriva; invece, a livello di "lettura" del codice, lo rende sicuramente meno leggibile
A me paradossalmente questo sembra meno leggibile del ternario, perché tocca fare mente locale sui valori assunti da retro e accettati da analogWrite, c'è un calcolo che non c'entra direttamente con il valore da assegnare. L'unico caso in cui il ternario mi sembra utile è proprio con la write:
Claudio_FF:
A me paradossalmente questo sembra meno leggibile del ternario,...
Sono d'accordo, anche io preferisco usare il ternario
In merito alla leggibilità, beh è tutta questione di abitudine. Io scrivo tanto in C# e Javascript, e la trovo comodissima, rende il codice compatto, tanto che ne sento la mancanza nei linguaggi VB!
Anche io sono per la salvaguardia del ternario, ma solo nei casi semplici esemplificati da @Claudio_FF
e magari con la sua impaginazione che incolonna bene bene.
Ovvio che se le istruzioni diventano più lunghe cambia tutto.
Questa è la mia opinione a prescindere da norme, regole, dogmi ecc.
Poi, in certi ambiti certe regole vanno applicate... amen, se s'ha da fa', s'ha da fa' e ci si adegua....