Задачки с лайвкода - собес с банком
№1
let first: String?? = nil
let second: String?? = .some(nil)
print((first ?? "1") ?? "2")
print((second ?? "1") ?? "2")
Что будет распечатано? и почему?
№2
class A {
var a: A?
}
struct B {
var b: B?
}
Все ок с кодом/скомплируется? Если нет, то что не так?
№3
class Awesome {
var name: String
init(name: String) {
self.name = name
}
}
let obj1 = Awesome(name: "123")
let obj2 = Awesome(name: "456")
let array1 = [obj1, obj2]
let array2 = array1
array2[0].name = "000"
print(array1[0].name)
print(array1[1].name)
Что будет распечатано? и почему?
№4
class A {
var array = [1,2,3,4,5,6,7]
func convert(item: Int) -> String {
return "12"
}
func convertMyArray() -> [String] {
return self.array.compactMap { result -> String in
return self.convert(item: result)
}
}
Все ок с кодом/скомплируется? Если нет, то что не так?
№5
protocol Prot {
}
extension Prot {
func test() {
print("Prot")
}
}
struct A: Prot {
func test() {
print("struct")
}
}
Какая тут диспетчеризация?
Если внутри протокола объявить функцию func test() то какая будет диспетчеризация?