Flag proposal
KennyTM~
kennytm at gmail.com
Tue Jun 14 06:01:20 PDT 2011
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).
More information about the Digitalmars-d
mailing list