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