Я родом из мира Java.Сейчас я программирую на Swift 4.
Я бы хотел реализовать абстрактный класс в Swift, я знаю, что в Swift нет такого понятия абстрактного класса.Но я знаю, что мы могли бы подражать этой концепции в Swift, используя протокол.Например, вот что я попробовал:
// With protocol, I can define functions that concrete class have to implement
protocol ProductProvider {
func getProductNumber() -> Int
}
// with protocol extension, I can define shared (computed) properties and functions among concrete classes that comply with this protocol
extension ProductProvider {
var maxProductCount: Int {
return 10
}
}
Но теперь я хотел бы иметь общую переменную, которую можно было бы установить и получить («общая» означает, что она будет использоваться совместно с классами, которые соответствуют этому протоколу):
extension ProductProvider {
var maxProductCount: Int {
set(newValue) {
// set to what if I couldn't define private stored variable in extension to hold the most recent set value ?
}
get{
// how to return the most recent value set?
}
}
}
Мой вопрос в комментарии приведенного выше кода.Как я могу сделать этот набор и получить переменную в расширении протокола в Swift 4?Если это невозможно, какие обходные пути возможны?