Sobes.tech
Junior — Middle

შესაძლებელია თუ არა მეთოდის დეფოლტული განხორციელების განსაზღვრა ინტერფეისში ან პროტოკოლში?

sobes.tech AI

პასუხი AI-სგან

Swift-ში პროტოკოლები შეიძლება შეიცავდნენ მეთოდების დეფოლტ რეალიზაციებს გაფართოებების (extensions) მეშვეობით. ეს საშუალებას აძლევს განსაზღვროს სტანდარტული ქცევა პროტოკოლის მეთოდებისთვის, რომელიც შეიძლება გადაწერილ იქნას კონკრეტულ ტიპებში.

მაგალითი:

protocol Greetable {
    func greet()
}

extension Greetable {
    func greet() {
        print("ნაგულისხმევი მისალმება")
    }
}

struct Person: Greetable {}

let p = Person()
p.greet() // გამოიტანს: ნაგულისხმევი მისალმება

ამ გზით, ნაგულისხმევი რეალიზაცია არ არის განსაზღვრული თავად პროტოკოლში, არამედ მისი გაფართოებაში.