[swift-users] Type alias with a "where" clause specifying required associated type

Rudolf Adamkovič salutis at me.com
Mon Sep 4 18:11:50 CDT 2017


I have the following ProceduralDrawing type:

public struct ProceduralDrawing<Float, Point: PointType> where Point.Float == Float {
    // ... code that used Float and Point ...
}

public protocol PointType {
    associatedtype Float: FloatingPoint
    var x: Float { get }
    var y: Float { get }
}

I would like to avoid adding Point as a generic parameter but the following doesn’t work:

public struct ProceduralDrawing<Float: FloatingPoint> {
    // ERROR: 'where' clause cannot be attached to a non-generic declaration
    typealias Point = PointType where Point.Float == Float
    // ... code that uses Float and Point ...
}

Is there a way to do this? If not, why?

Thanks!

R+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170905/468c87b1/attachment.html>


More information about the swift-users mailing list