Flag proposal
Nick Sabalausky
a at a.a
Sun Jun 19 12:08:33 PDT 2011
"so" <so at so.so> wrote in message news:op.vw2s1b19mpw3zg at tan-pc...
> On Tue, 14 Jun 2011 16:01:20 +0300, KennyTM~ <kennytm at gmail.com> wrote:
>
>> On Jun 14, 11 19:11, so wrote:
>> [snip]
>>> Also i don't understand why some think allowing hybrid calls has any
>>> merit. Just search "named arguments" and first thing you'd see is calls
>>> with all arguments named, no exception. Allowing unnamed arguments and
>>> named arguments in one call doesn't make any sense to me, it is almost
>>> opposite to the reasons named arguments designed for, you don't even
>>> need to talk about its drawbacks like the complications and confusions.
>>
>> And if you think it's complicated, you're just thinking in a too
>> complicated way. The rule is simple.
>>
>> Say there is a function
>>
>> pure nothrow
>> S parseString(S=const(char)[], C)
>> (ref C[] input,
>> out ConversionResult result,
>> char quote='"',
>> bool recognizePrefix=true) if (...);
>>
>> and you call it as
>>
>> string s = `"hello"`;
>> ConversionResult detailResult;
>> auto parsed = parseString(s, recognizePrefix:false,
>> result:detailResult);
>>
>> The first step is identify all positional arguments ('s' here), and fill
>> them in in-order.
>>
>> input <- s
>> result <- ...
>> quote <- ...
>> recognizePrefix <- ...
>>
>> next, we match the named args
>>
>> input <- s
>> result <- detailResult
>> quote <- ...
>> recognizePrefix <- false
>>
>> finally we fill in the optional parameters
>>
>> input <- s
>> result <- detailResult
>> quote <- '"'
>> recognizePrefix <- false
>>
>> what's so complicated? Actually, reordering creates more complication
>> than hybrid (e.g. ambiguity in selecting an overload).
>
> So complicated because it took you this long to match the parameters with
> the variables, you still need to check function definition because you
> have parameters that have no match. These are the very things named
> arguments needs to solve or am i missing something?
>
Simple rule for combining hybrid and reordering:
Look at the caller's args one at a time: as soon as one is reordered, the
rest of the args must be named (otherwise you wouldn't know which param it's
supposed to be).
More information about the Digitalmars-d
mailing list