Свойство1 - это все, что соответствует протоколу A
. Таким образом, это может быть другой класс, структура и т. Д. c. Допустим, у вас есть протокол Vegetable
и класс с именем Market
. Вы захотите продать несколько видов Vegetable
, однако вы должны убедиться, что овощи продаются. Вы можете сделать это с помощью протоколов.
protocol Vegetable {
var isForSale: Bool { get }
}
// Now let's create some vegetables
class Carrot: Vegetable {
let isForSale = true
}
class Spinach: Vegetable {
let isForSale = false
}
// This is our market.
class Market {
let vegetables: [Vegetable] = [Carrot(), Spinach()]
// Now we can check if the vegetables are for sale, because we know for sure that they conform to Vegetable so must implement this variable.
var forSale: [Vegetable] = {
vegetables.filter { $0.isForSale } // This will return [Spinach()]
}
}