In this code example:

import Foundation

protocol AreaProtocol {
        func    area() -> CGFloat
        
        // implemented in protocol extension
        func    volume( height:CGFloat ) -> CGFloat
        // ....
}

extension AreaProtocol {
        func    volume( height:CGFloat ) -> CGFloat {
                return height * area()
        }
        // ....
        // ....
}


// conform CGPoint sequences to AreaProtocol
extension Sequence
        where Self : AreaProtocol, Element == CGPoint
{
        func area() -> CGFloat {
                return 0.0      // ... poligon area
        }
}

let p0 = CGPoint(x: 0.0, y: 0.0)
let p1 = CGPoint(x: 2.0, y: 0.0)
let p2 = CGPoint(x: 2.0, y: 2.0)
let p3 = CGPoint(x: 0.0, y: 2.0)

let poligon = [p0,p1,p2,p3]
let a  = poligon.area()                 // ! Type '[CGPoint]' does not conform 
to protocol 'AreaProtocol'
let v  = poligon.volume( height:10.0 )  // ! Value of type '[CGPoint]' has no 
member 'volume'


An array of CGPoint is a CGPoint sequence? Why the array don't gets automatic 
conformance to AreaProtocol?
How can conform an array of CGPoint to AreaProtocol?

Sorry for my bad english,
Antonino

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to