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