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() // გამოიტანს: ნაგულისხმევი მისალმება
ამ გზით, ნაგულისხმევი რეალიზაცია არ არის განსაზღვრული თავად პროტოკოლში, არამედ მისი გაფართოებაში.