Junior — Middle
როგორ შეიძლება შეზღუდოთ მეთოდის შიგნით გენერიკებში დაშვებული პარამეტრების ტიპები?
sobes.tech AI
პასუხი AI-სგან
Swift-ში, მეთოდის შიგნით გენერიკების დაშვებული ტიპების შეზღუდვისთვის გამოიყენება შეზღუდვის სინტაქსი პროტოკოლების ან კლასების საშუალებით, სიტყვა where-ის ან მემკვიდრეობის მითითებით.
მაგალითი, სადაც პარამეტრის ტიპი უნდა შეესაბამებოდეს Equatable პროტოკოლს:
func findIndex<T: Equatable>(of valueToFind: T, in array: [T]) -> Int? {
for (index, value) in array.enumerated() {
if value == valueToFind {
return index
}
}
return nil
}
თუ საჭიროა უფრო კომპლექსური შეზღუდვა, შეიძლება გამოიყენოს where:
func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
if item1 < item2 {
print("item1 ნაკლებია item2-ზე")
}
}
ამ გზით, შეზღუდვები საშუალებას აძლევს კომპილატორს გადაამოწმოს, რომ პარამეტრების ტიპები პასუხობენ განსაზღვრულ მოთხოვნებს, რაც ზრდის კოდის უსაფრთხოებას და წინასწარ განსაზღვრას.