You can kinda do this already:

func foo(_ parameter: inout ParameterType) {
        var shortcut: TheType {
                get {
                        return parameter.very.very.long.and.tedious.inout.member
                }
                set {
                        parameter.very.very.long.and.tedious.inout.member = 
newValue
                }
        }
        // shortcut is of type `inout TypeType`
}

This is exactly what I imagine the compiler generating when I write this in a 
hypothetical Swift:

func foo(_ parameter: inout ParameterType) {
        var shortcut: inout TheType = 
parameter.very.very.long.and.tedious.inout.member
}

Or, using type inference:

func foo(_ parameter: inout ParameterType) {
        var shortcut: inout = parameter.very.very.long.and.tedious.inout.member
}

> On Jun 10, 2017, at 8:25 AM, John McCall <rjmcc...@apple.com> wrote:
> 
> 
>> On Jun 9, 2017, at 2:42 PM, Gor Gyolchanyan via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> My answer to `inout` is to promote it to a full-fledged "storage class" (in 
>> C terminology) and allow normal variables to be `inout`.
>> This would immediately solve the problems with `inout` being a magical thing 
>> in functions, as well as a convenient way of storing "references" (in C++ 
>> terminology) to potentially huge inout expressions, not to mention returning 
>> an inout from a function, effectively spreading the getter-setter 
>> awesomeness to everything else besides properties and subscripts.
> 
> C++ implements this idea by being utterly unsafe; Rust implements it by 
> introducing entire new dimensions of language complexity.  Are you proposing 
> one of these in particular, or do you have your own concept?
> 
> John.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to