สมมติว่าฉันมีโปรโตคอลเหล่านี้:
protocol SomeProtocol {
}
protocol SomeOtherProtocol {
}
ตอนนี้ถ้าฉันต้องการฟังก์ชันที่ใช้ประเภททั่วไป แต่ประเภทนั้นต้องเป็นไปตามที่SomeProtocol
ฉันสามารถทำได้:
func someFunc<T: SomeProtocol>(arg: T) {
// do stuff
}
แต่มีวิธีเพิ่มข้อ จำกัด ประเภทสำหรับหลายโปรโตคอลหรือไม่?
func bothFunc<T: SomeProtocol | SomeOtherProtocol>(arg: T) {
}
สิ่งที่คล้ายกันใช้เครื่องหมายจุลภาค แต่ในกรณีนี้จะเป็นการเริ่มต้นการประกาศประเภทอื่น นี่คือสิ่งที่ฉันได้ลอง
<T: SomeProtocol | SomeOtherProtocol>
<T: SomeProtocol , SomeOtherProtocol>
<T: SomeProtocol : SomeOtherProtocol>