Usare le computed properties in Swift
In Swift le computed properties sono proprietà di una struct/class che sostanzialmente sono "calcolate" e quindi non hanno un "singolo" valore.
Più facile fare un esempio che spiegarlo.
Cominciamo da questo:
struct CreaFile {
var path: String
var nomeFile: String
var file: String {
return path + "/" + nomeFile
}
}
var cf = CreaFile(path: "/home", nomeFile: "test.txt")
print(cf.file)
Come vedete file è "calcolata" in base ad altre variabili.
In questo è readonly, quindi l'esempio qui sotto darà errore:
struct CreaFile {
var path: String
var nomeFile: String
var file: String {
return path + "/" + nomeFile
}
}
var cf = CreaFile(path: "/home", nomeFile: "test.txt")
print(cf.file)
cf.file = "fff"
Volendo possiamo usare get e set per impostare lettura e scrittura:
struct CreaFile {
var path: String
var nomeFile: String
var file: String {
get {
return path + "/" + nomeFile
}
set(newValue) {
nomeFile = newValue
}
}
}
var cf = CreaFile(path: "/home", nomeFile: "test.txt")
print(cf.file)
cf.file = "fff.txt"
print(cf.file)
Quello che dovete tenere a mente del set, è che viene usato per cambiare una proprietà che calcola la computed property, non la proprietà in se.
Infine vediamo un esempio usando una classe:
class CreaFile {
var path: String
var nomeFile: String
var file: String {
get {
return path + "/" + nomeFile
}
set(newValue) {
nomeFile = newValue
}
}
init() {
path = ""
nomeFile = ""
}
}
var cf = CreaFile()
cf.path = "/home"
cf.nomeFile = "test.txt"
print(cf.file)
cf.file = "fff.txt"
print(cf.file)
Sostanzialmente è la stessa cosa.
Enjoy!
swift computed property get set class struct
Commentami!