Yes, please.

+1.

Charles

> On Dec 8, 2016, at 6:45 PM, Braeden Profile via swift-evolution 
> <[email protected]> wrote:
> 
> Has the core team or the community considered the possibility of implementing 
> covariant/contravariant generic types?  It would really be appreciated.
> 
> I know with Array, vague-ifying or specific-ifying the type ([Int] to [Any]) 
> has help from the compiler—and we can use `map` if all else fails—but that 
> only lessens the impact of the missing functionality.  This is my exact use 
> case here, using SceneKit to identify the first-hit Controller object:
> 
> class ControllerNode<Controller: AnyObject>: SCNNode
> {
>       let controller: Controller
> }
> 
> // Ordered front to back, returns the first Controller object.
> for hit in hitTest
> {
>       // Determine if this node is part of a controller.
>       let ancestrySequence = sequence(first: hit.node, next: { $0.parent })
>       let lastControllerNode: ControllerNode<AnyObject>? = 
> ancestrySequence.reduce(nil)
>               { ($1 as? ControllerNode) ?? $0 }
>       
>       if let cabinet = lastControllerNode?.controller as? CabinetController
>               { return cabinet }
>       
>       if let wall = lastControllerNode?.controller as? WallController
>               { return wall }
> }
> 
> This compiles, but unfortunately, this will never work.  The `reduce` 
> algorithm always ends up trying to convert things like 
> `ControllerNode<WallController> as ControllerNode<AnyObject>`, 
> which—unintuitively—always fails.  Without compiler help, so would things 
> like `myIntArray as [Any]` or `Optional<Boy>(Boy()) as Optional<Human>`.
> 
> If Swift is supposed to welcome generic programming, this would be a great 
> thing to have.
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to