В Swift можно расширить последовательность, содержащую элементы определенного типа, например:
extension SequenceType where Generator.Element == Rect {
func intersection() -> Rect? { ... }
}
// when using
let intersection = [rect1, rect2, rect3].intersection()
что приятно. Однако как я могу сделать то же самое, если сам Rect является универсальным типом (например, Rect<Float>
, Rect<Double>
и т. д.)? Я старался
extension SequenceType where Generator.Element == Rect<T>
но компилятор жалуется на «необъявленный тип T». Я не могу понять, куда его поставить. Прямо сейчас я должен специализироваться на каждом типе с плавающей запятой.