--
Brent Royal-Gordon
Sent from my iPhone
> On Feb 27, 2017, at 10:39 AM, Matthew Johnson via swift-evolution
> <[email protected]> wrote:
>
> Here is an example of the kind of thing I have in mind:
>
> enum PlayerState {
> case stopped
> sub case playing(with track: Track)
>
> // type of the playing case looks something like this:
> struct Playing { let track: Track }
>
> // the case value constructor looks something like this
> static func playing(with track: Track) -> Playing {
> return Playing(track: track)
> }
> }
Consider a different desugaring that leads to a different conclusion:
enum PlayerState {
case struct stopped {
init() {}
// I have some truly remarkable thoughts
// on types like this one, which this margin
// is too narrow to contain.
}
case struct playing {
let track: Track
init(track: Track) {
self.track = track
}
}
In this design, because the associated values on a case are really defining an
initializer on a type, it would be against Swift conventions to use a parameter
label like `with` instead of the actually-meaningful `track`. So the solution
to this kind of problem is simply "Don't do that".
--
Brent Royal-Gordon
Sent from my iPhone
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution