We can already do this nicely with map and flatMap:
var removedElement = index.map { arr.removeAtIndex($0) }
> On 12 Jul 2016, at 16:16, Liam Stevenson via swift-evolution
> <[email protected]> wrote:
>
> Optional chaining is one of the great, useful features of Swift. It can be
> used “for querying and calling properties, methods, and subscripts on an
> optional that might currently be nil,” to quote Apple's "The Swift
> Programming Language.” However, often it is necessary to call a function,
> subscript, or initializer conditionally based on if one or more parameters
> are nil. The proposed solution is to allow a question mark (?) to be placed
> after an optional value wished to be used as a parameter. Then, the function,
> initializer, or subscript will be called if and only if the parameter's value
> is not nil. If it has a return type, it will return an optional, which will
> be nil if the parameter is nil.
>
> Old way (with seemingly unnecessary if statement considering the flexibility
> provided by optional chaining):
> var arr = ["apples", "oranges", "pears", "bananas"]
> let index: Int? = 2
>
> var removedElement: String?
> if let index = index {
> removedElement = arr.removeAtIndex(index) //sets removedElement
> to "pears"
> }
> Using this proposal:
> var arr = ["apples", "oranges", "pears", "bananas"]
> let index: Int? = 2
>
> var removedElement: String?
> removedElement = arr.removeAtIndex(index?) //sets removedElement to
> “pears"
> Another similar example:
> Old way:
> var arr = ["apples", "oranges", "pears", "bananas"]
> let index: Int? = nil
>
> var removedElement: String?
> if let index = index {
> removedElement = arr.removeAtIndex(index) //never called
> }
> Using this proposal:
> var arr = ["apples", "oranges", "pears", "bananas"]
> let index: Int? = nil
>
> var removedElement: String?
> removedElement = arr.removeAtIndex(index?) //removeAtIndex is never
> called, and removedElement is set to nil
>
> What does everyone think of this proposal? It is additive so it will not
> break any existing code, and in the future it will provide conciseness and
> clarity since the syntax is similar to the existing optional chaining syntax.
>
> View the full proposal on GitHub here:
> https://github.com/liam923/swift-evolution/blob/master/proposals/NNNN-extend-optional-chaining-to-function-initializer-and-subscript-parameters.md
>
> <https://github.com/liam923/swift-evolution/blob/master/proposals/NNNN-extend-optional-chaining-to-function-initializer-and-subscript-parameters.md>
>
> Liam
> _______________________________________________
> 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