Hello all,

I was surprised to find that I can't use an instance member as the default 
value of a method parameter, only constants and the run-time calculated #file, 
#line, etc. Is it possible to remove this limitation?

I'd like to propose that we add an overload of the collection 
index(_:offsetBy:) methods that use the collection's startIndex as a default 
parameter, but we can't provide that without either this feature or an extra 
overload. If the declaration looks like this:

extension Collection {
    func index(_ i: Index = startIndex, offsetBy n: IndexDistance) -> Index {
        // ...
    }
}

then calling that method with an omitted first parameter would treat it as 
something like this:

extension Collection {
    func index(offsetBy n: IndexDistance) -> Index {    
        let i = startIndex
        // ...
    }
}

Is this just syntactic sugar, or am I missing something that makes this harder 
than it looks? I can see how more complex expressions could be useful there, 
too, and can't find an obvious reason we couldn't use any code that could be 
inserted at the top of the method body.

Thanks!
Nate

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to