Come si assegnano più variabili in una riga utilizzando Swift?Assegnazione di più variabili in Swift
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
Come si assegnano più variabili in una riga utilizzando Swift?Assegnazione di più variabili in Swift
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
Non è così. Questa è una caratteristica del linguaggio per evitare che lo standard indesiderato effetto collaterale di assegnazione restituire un valore, come described in the Swift book:
differenza l'operatore di assegnamento in C e Objective-C, l'operatore di assegnamento a Swift non si restituisce un valore . La seguente dichiarazione non è valida:
if x = y { // this is not valid, because x = y does not return a value }
Questa caratteristica impedisce l'operatore di assegnazione (
=
) venga utilizzato per caso quando l'operatore uguale (==
) è effettivamente destinato. Rendendo invalido sex = y
, Swift ti aiuta a evitare questo tipo di errori nel codice.
Quindi, questo aiuta a prevenire questo errore estremamente comune. Mentre questo tipo di errore può essere mitigato in altre lingue, ad esempio usando Yoda conditions, i designer di Swift hanno deciso che era meglio accertarsi a livello linguistico che non si potesse sparare ai piedi. Ma significa che non è possibile utilizzare:
blah = blah2 = 3
Se siete disperati per fare l'assegnazione su una linea, è possibile utilizzare la sintassi tuple, ma si sarebbe ancora necessario assegnare specificamente ogni valore:
(blah, blah2) = (3, 3)
... e non lo consiglio. Anche se può sentirsi scomodo in un primo momento, semplicemente digitando il tutto fuori è il modo migliore per andare, a mio parere:
blah = 3
blah2 = 3
come la risposta accettata dice: È possibile ottenere una sintassi più stretto, tuttavia, non è possibile assegnare da a
a b
a c
senza utilizzare più righe (per sicurezza, probabilmente). Ecco un esempio di una sintassi più concisa di dichiarare e assegnare più variabili in una sola riga:
var red, green, blue, alpha : CGFloat
(red, green, blue, alpha) = (0.0, 0.0, 0.0, 0.0)
ledColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
Potrebbe per favore spiegare il codice sopra. davvero non potevo decifrarlo :) –
Hai capito le prime due righe? –
sì ... ha ottenuto la dichiarazione e l'incarico. –
Questo è il tipo di roba pesante che mi sento come appare in lingue "early/giovani" per tutto il tempo. Gli dei del linguaggio rendono impossibile scrivere codice che soggettivamente trova discutibile (essendo questo un esempio, un altro è la necessità di anteporre float a '0' [prova a scrivere' let x = .5' in swift]). – dave
blah = 3; blah2 = 3; –