> On Feb 22, 2017, at 5:32 PM, Ben Cohen via swift-evolution
> wrote:
>
>> On Feb 22, 2017, at 10:42 AM, Nate Cook via swift-evolution
>> mailto:swift-evolution@swift.org>> wrote:
>>
>> Oops, left out that there's this horrifying way of writing it right now:
>>
>> Nobody wants that.
>>
>
>
I think this is a manifestation of a more general problem, that default
arguments cannot capture values from outer scope. Saying they’re evaluated in
“type context” and not “instance context” is one way to skirt around the issue,
but you can still trigger capturing anyway, and crash in SILGen:
I would use this all the time if it was available. What I do now most of the
time is take an optional instead and then ‘??’ with the instance variable. That
doesn’t work if I need an optional for other reasons, and nil is kind of a
magical value…
Thanks,
Jon
> On Feb 22, 2017, at 11:53 AM, Na
> On Feb 22, 2017, at 8:25 PM, Derrick Ho via swift-evolution
> wrote:
>
> 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
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
+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 typ
> On Feb 22, 2017, at 10:42 AM, Nate Cook via swift-evolution
> 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
> /
After further examination, it looks like default parameter values are evaluated
in a type context, not an instance context, which is why this isn't working.
Using the instance context there would be provide more flexibility, since we
could still explicitly access type-level vars.
Does anyone ha
It's nothing that is miss all the time, but I was informed about this
limitation by the compiler before ;-), so unless there are some unexpected
downsides, it should be added — and I wouldn't limit it to instance members:
Other parameters could be useful defaults as well (or think of scenarios li
> On Feb 22, 2017, at 10:16 AM, Nate Cook via swift-evolution
> wrote:
>
> 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 li
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.
___
swift-
+1
I was just missing this feature as well.
Thanks,
Jon
> On Feb 22, 2017, at 10:16 AM, Nate Cook via swift-evolution
> wrote:
>
> 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 calcu
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(_:offse
13 matches
Mail list logo