[swift-evolution] Implicit Optionals for Tuples & Tuples as Function Parameter

Muhammad Tahir Vali tahir.vali13 at gmail.com
Fri Nov 11 13:54:25 CST 2016


Im curious to know the reasoning behind why implicit-wrapped optionals
aren't allowed when creating tuples. Below is an example with type aliases
and anonymous tuples.

ex.

typealias Name = (first: String!, middle: String?, last: String!)

typealias Name = (first: String!, middle: String?, last: String!)!

var name : (first: String!, middle: String?, last: String!)
var name : (first: String!, middle: String?, last: String!)!

error from all 4 examples above:
Implicitly unwrapped optionals are only allowed at top level and as
function results


I also noticed that I can modify tuples using functions ONLY if I use
*inout*.

func name(Person : inout (first: String?, middle: String?, last: String?)) {

    Person.first = "John"

    Person.last = "Doe"

}


OR


func name(Person : inout Name) {

    Person.first = "John"

    Person.last = "Doe"

}

This is because tuples are passed into functions as 'let' constants. Why
not add the ability to modify a copy of the tuple inside the function ?


-- 
Best Regards,

Muhammad T. Vali
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161111/6e88de4d/attachment.html>


More information about the swift-evolution mailing list