[swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

Derrick Ho wh1pch81n at gmail.com
Wed Feb 22 22:25:58 CST 2017


Did you know you can use a static variable as a default parameter?

class poncho {
static var color= "yellow"

func foo(color: String = poncho.color){}
}

I think instance members should not be allowed as default members though.
It may lead to unexpected behavior.
On Wed, Feb 22, 2017 at 11:06 PM T.J. Usiyan via swift-evolution <
swift-evolution at swift.org> wrote:

> +1 if this doesn't have terrible implications.
>
> The downside to making it IUO or Optional is that that changes the type
> signature of  `index(i:offsetBy:)` for no reason other than a default
> value. If you decide to change to or away from providing a default value it
> probably shouldn't change the type accepted in that spot.
>
> On Wed, Feb 22, 2017 at 7:32 PM, Ben Cohen via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>
> On Feb 22, 2017, at 10:42 AM, Nate Cook via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> Oops, left out that there's this horrifying way of writing it right now:
>
> extension Collection {
>     func index(_ i: Index! = nil, offsetBy n: IndexDistance) -> Index {
>         let i = i ?? startIndex
>         // ...
>     }
> }
>
> Nobody wants that.
>
>
> Oh I don’t think it’s all that bad! It also doesn’t need to be an IUO,
> since you’re unwrapping it immediately into another variable no matter what.
>
> This also gives you the flexibility to write this:
>
> extension Collection {
>     func index(_ i: Index? = nil, offsetBy n: IndexDistance) -> Index {
>         let i = i ?? (n < 0 ? endIndex : startIndex)
>         // ...
>     }
> }
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170223/bb129fa2/attachment.html>


More information about the swift-evolution mailing list