> On Jun 18, 2017, at 10:33 PM, Howard Lovatt via swift-users 
> <swift-users@swift.org> wrote:
> 
> To me Angle is a unit with two common representations: radians and degrees. 
> It's not an enum because it doesn't have two values, it has one value that 
> you can view in two ways.
> 
> Therefore I would make an Angle struct, something like:
> <snip>

Lots of different ways I think. I chose not between struct and enum, but used 
both:

struct Angle {
        enum Unit:CGFloat {
                case radians = 1.0
                case degrees = 57.29577951309314 // 360.0 / Tau
                case rotations = 0.1591549430918953 // 1.0 / Tau
        }
        
        // MARK: - Stored Properties
        var raw:CGFloat = 0.0
        var unit:Unit = .radians
        ….
        // MARK: - Left for the Student

I do a bit of UI programming with angles and have found rotations (I’ve drunk 
too much of the Tau manifesto koolaid probably) to be the most natural fit for 
a lot of things. Having an angle object allows me to layer over (via 
extensions) the various cocoa/uikit apis that take angles with type safe angle 
objects, and yet given me the ability to express said angles in whatever 
intermediate domain best fits.
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to