W sesji Wprowadzenie do Swift WWDC description
pokazano właściwość tylko do odczytu :
class Vehicle {
var numberOfWheels = 0
var description: String {
return "\(numberOfWheels) wheels"
}
}
let vehicle = Vehicle()
println(vehicle.description)
Czy istnieją jakiekolwiek implikacje dla wyboru powyższego podejścia zamiast użycia metody zamiast tego:
class Vehicle {
var numberOfWheels = 0
func description() -> String {
return "\(numberOfWheels) wheels"
}
}
let vehicle = Vehicle()
println(vehicle.description())
Wydaje mi się, że najbardziej oczywistymi powodami, dla których wybrałbyś obliczoną właściwość tylko do odczytu, są:
- Semantyka - w tym przykładzie sensowne jest,
description
aby być właściwością klasy, a nie działaniem, które wykonuje. - Zwięzłość / przejrzystość - zapobiega konieczności używania pustych nawiasów podczas pobierania wartości.
Oczywiście powyższy przykład jest zbyt prosty, ale czy istnieją inne dobre powody, aby wybrać jeden z nich? Na przykład, czy są jakieś cechy funkcji lub właściwości, które pomogłyby w podjęciu decyzji, której użyć?
NB Na pierwszy rzut oka wydaje się to dość powszechnym pytaniem OOP, ale chciałbym poznać wszelkie funkcje specyficzne dla Swift, które wskazywałyby na najlepsze praktyki podczas używania tego języka.