1. Объясните поведение кода. Что произойдет при сравнении X() == Y()?
protocol Weapon {
associatedtype Kind: Equatable
func getKind() -> Kind
}
func compareContainerValue<C1: Weapon, C2: Weapon>(container1: C1, container2: C2) -> Bool {
container1.getKind() == container2.getKind()
}
class X: Equatable { /**/ }
class Y: Equatable { /**/ }
X() == Y()2. Задача: Реализуйте методы forceUnwrap(), оператор ?? и исправьте оператор ==.
enum CustomOptional<T>: ExpressibleByNilLiteral {
case some(T)
case none
func forceUnwrap() {
}
static func ?? (input: T) {
}
static func == <T: Equatable>(lhs: T, rhs: T) -> Bool {
switch (lhs, rhs) {
case (.none,…