2015-07-08 33 views
5

Mi sto esercitando nel campo di gioco di Swift e non sono riuscito a capire perché Swift sia troppo specifico su dove il programmatore dovrebbe fornire spazi e dove no. Ho fatto questa domanda su molti siti e chat, ma non ho avuto risposta.quali sono le regole per gli spazi in swift

var j: Int = 34 // Right 
var j:Int=23 //Wrong 

Inoltre, in classe

self.variable-= 5 //Wrong. Error: Consecutive statements must be followed by ; 
self.variable-=5 // Right 
self.variable -= 5 // Right 

;

Anche questo ":" crea a volte alcuni problemi con gli spazi.

Penso che gli spazi non debbano avere assolutamente alcun effetto sul codice. Di solito è solo per il beneficio di un programmatore. Rende solo il codice più leggibile nient'altro. Qual è la migliore risorsa per leggere tutte le regole rapide sugli spazi.

risposta

13

risposta alla seconda parte della tua domanda può essere trovato qui swift docs

gli spazi intorno ad un operatore viene utilizzato per determinare se un operatore viene utilizzato come operatore di prefisso, un operatore di postfix o un operatore binario . Questo comportamento è riepilogato nelle seguenti regole:

Se un operatore ha spazi bianchi attorno a entrambi i lati o intorno a nessun lato, viene considerato un operatore binario. Ad esempio, l'operatore + in a + b e a + b viene trattato come operatore binario.

Se un operatore ha spazi bianchi solo sul lato sinistro, viene considerato come operatore prefisso unario. Ad esempio, l'operatore ++ in a ++ b viene trattato come un operatore unario prefisso.

Se un operatore ha spazi bianchi solo sul lato destro, viene considerato come un operatore unario postfisso. Ad esempio, l'operatore ++ in a ++ b viene trattato come un operatore unario postfix.

Se un operatore non ha spazi bianchi sulla sinistra ma è seguito immediatamente da un punto (.), Viene considerato come operatore unario postfisso. Ad esempio, l'operatore ++ in a ++ .b viene trattato come un operatore unario postfix (a ++ .b anziché a ++ .b).

ecc ... (leggere la documentazione per maggiori dettagli)

Per quanto riguarda la prima parte della tua domanda, non ho visto alcun problema con entrambi i casi di dichiarare le variabili.

var j: Int = 34 
var j:Int=23 

L'unico problema con il codice fornito è che si dichiara j due volte nello stesso ambito. Prova a cambiare una delle j in una xey o qualcos'altro.

Se vi stavate chiedendo circa

var j:Int =10 

o

var j:Int= 10 

un'occhiata alle regole di cui sopra. = è un operatore quindi se si dovesse fare uno di questi, sarebbe trattato come prefisso o postfix, e si otterrebbe l'errore che prefisso/postfix = è riservato

Queste regole sono importanti a causa dell'esistenza di operatori come gli operatori unario più e meno unario.Il compilatore deve essere in grado di distinguere tra un operatore binario più e un operatore più unario. List of operators

Problemi correlati