Sobes.tech
Junior — Middle

Μπορεί να οριστεί μια λειτουργία μέσα σε έναν ορισμό πρωτοκόλλου;

sobes.tech AI

Απάντηση από AI

Στο Swift, μέσα στον ορισμό ενός πρωτοκόλλου δεν μπορεί να υλοποιηθούν συναρτήσεις — τα πρωτόκολλα περιγράφουν μόνο τις απαιτήσεις για μεθόδους, ιδιότητες και άλλα μέλη που πρέπει να υλοποιηθούν σε κλάσεις, δομές ή enumerations που συμμορφώνονται με το πρωτόκολλο.

Δηλαδή, σε ένα πρωτόκολλο μπορείτε να δηλώσετε την υπογραφή μιας συνάρτησης, αλλά όχι το σώμα της:

protocol MyProtocol {
    func doSomething()
}

Η υλοποίηση της συνάρτησης doSomething() πρέπει να παρέχεται στον τύπο που κληρονομεί αυτό το πρωτόκολλο.

Ωστόσο, με την εμφάνιση των επεκτάσεων πρωτοκόλλων (protocol extensions), μπορείτε να προσθέσετε μια προεπιλεγμένη υλοποίηση μεθόδων, η οποία θα είναι διαθέσιμη σε όλους τους τύπους που συμμορφώνονται με το πρωτόκολλο:

extension MyProtocol {
    func doSomething() {
        print("Προεπιλεγμένη υλοποίηση")
    }
}

Έτσι, άμεσα μέσα στο πρωτόκολλο δεν μπορεί να οριστεί μια συνάρτηση, αλλά μπορείτε να προσθέσετε μια υλοποίηση στην επέκταση του πρωτοκόλλου.