Swift: Sintassi di base parte tre

      Nessun commento su Swift: Sintassi di base parte tre

swift-hero

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)