Задачки с лайвкода - собес с банком

№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() то какая будет диспетчеризация?