Ciao a tutti e bentornati in questa nuova lezione dedicata al nuovo linguaggio di casa Apple. Swift tra le varie strutture dati mette a disposizione anche le struct, per chi non ricorda cosa sono le struct o come si usano può leggersi questo nostro articolo: Struct in C.
struct Persona { var nome :String var cognome :String init (name:String,surname:String){ nome=name cognome=surname } func stampaInfo(name:String,surname:String){ println ("mi chiamo \(name)\(surname)") } func stampa(){ println ("mi chiamo \(nome)\(cognome)") } } var pippo = Persona(name: "Mario", surname: "Rossi") pippo.stampa() pippo.stampaInfo("Luigi", surname: "Bianchi")
Come si può notare in swift non c’è molta differenza tra una classe e una struct, quindi la domanda che sicuramente vi state porgendo: quale sono le differenze tra le due? e quando usare una e quando usare l’altra? Be prima di tutto una struct non può ereditare da un’altra struct, quindi questa potrebbe essere una prima differenza, poi le struct sono passate per valore mentre le classi per riferimento. Quindi per quanto mi riguarda utilizzerei una struct per una struttura dati non molto complessa, mentre una classe per un qualcosa di più complesso. Vediamo ora come creare un metodo di classe o metodi statici:
class MiaClasse {
class func mioMetodo (stringa :String)->String{
return stringa + ” metodo di classe”
}
}
var stringa = “Mia Stringa”
println (MiaClasse.mioMetodo( stringa))
in-out
Un parametro in-out è un valore che viene passato alla funzione, viene modificata dalla funzione, e viene restituito dalla funzione per sostituire il valore originale.
func swapVar (inout a : Int ,inout b :Int){
var temp = a
a = b
b = temp
}
var someInt = 3
var anotherInt = 107
swapVar(&someInt, &anotherInt)
Leggere e scrivere un file
//imposto come path di il desktop
var path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DesktopDirectory, NSSearchPathDomainMask.AllDomainsMask, true)[0] asString
var fileName = “file.txt”
var testoDaScrivrere = “Ciao mondo”
var pathCompleto = path + “/\(fileName)“
//scrivo sul file
testoDaScrivrere.writeToFile(pathCompleto, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
//leggo dal file
var content = NSString.stringWithContentsOfFile(pathCompleto) as String
println(content)