Example:
enum something {
case onething
case anotherthing
}
extension something : RawRepresentable {
typealias RawValue = (Int, Int)
init?(rawValue: something.RawValue) {
switch rawValue {
case (1, 1):
self = .onething
case (2, _):
self = .anotherthing
default:
return nil
}
}
var rawValue: (Int, Int) {
switch self {
case .onething: return (1, 1)
case .anotherthing: return (2, 0)
}
}
}
let whatisit = something(rawValue: (1, 1))
something.onething.rawValue
Karl
Sent from my iPad
> On 14 Oct 2016, at 19:04, Karl Wagner <[email protected]> wrote:
>
> You can already do this; you just need to implement RawRep manually.
>
> What I think you mean to propose is that the compiler shorthand we have
> (which synthesises the conformance if you use the equal signs next to the
> cases) be extended to support tuples of the types it currently supports.
> That's a relatively simple, non-source-breaking additive change. It likely
> doesn't fit in the scope of swift 4 phase 1, though (sorry, I've been guilty
> of chatting about non-abi stuff too as I encounter things which irritate me;
> trying to be more disciplined)
>
> Karl
>
> Sent from my iPad
>
>> On 14 Oct 2016, at 12:55, Haravikk via swift-evolution
>> <[email protected]> wrote:
>>
>>
>>> On 14 Oct 2016, at 09:49, David Sweeris <[email protected]> wrote:
>>>
>>> I'm very much in favor of the functionality, but I don't think the
>>> implementation should rely on compiler magic.
>>>
>>> - Dave Sweeris
>>
>> Well it's not too much in the way of magic really, more just that we need
>> Swift to see tuples as conforming to RawRepresentable and
>> ExpressableAsTuple, although they currently aren't types in the normal
>> sense. So the protocols being used will be the same as you might use
>> yourself, they'll just be applied automatically for tuples.
>>
>> It'd be neat if it could be done properly, but that could involve even more
>> work, but doing this automatically for now should be fairly simple (though I
>> say that as a person who wouldn't be the one doing it ;)
>> _______________________________________________
>> 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