Stavo lavorando su un tutorial Swift e ho scoperto che Swift ha uno strano modo di gestire l'istruzione multilinea.Dichiarazione multilinea in Swift
In primo luogo, ho definito alcune estensione alla String
classe standard:
extension String {
func replace(target: String, withString: String) -> String {
return self.stringByReplacingOccurrencesOfString(target, withString: withString)
}
func toLowercase() -> String {
return self.lowercaseString
}
}
Questo funziona come previsto:
let str = "HELLO WORLD"
let s1 = str.lowercaseString.replace("hello", withString: "goodbye") // -> goodbye world
Questo non funziona:
let s2 = str
.lowercaseString
.replace("hello", withString: "goodbye")
// Error: could not find member 'lowercaseString'
Se io sostituire il riferimento alla proprietà lowercaseString
con una chiamata di funzione, funziona di nuovo :
let s3 = str
.toLowercase()
.replace("hello", withString: "goodbye") // -> goodbye world
C'è qualcosa nelle specifiche del linguaggio Swift che impedisce a una proprietà di essere interrotta su una propria linea?
Codice a Swift Stub.