Orphan format arguments: args[0..1]
    Steven Schveighoffer 
    schveiguy at gmail.com
       
    Sun Dec 16 20:00:35 UTC 2018
    
    
  
On 12/15/18 7:34 PM, Ali Çehreli wrote:
> This one confused me until I decided to talk to a rubber ducky:
> 
> import std.string;
> 
> void main() {
>      auto s = "%s is a good number".format(42);
> }
> 
> Fine; it works... Then the string becomes too long and I split it:
> 
>      auto s = "%s is a good number but one needs to know" ~
>               " what the question exactly was.".format(42);
> 
> Now there is a compilation error:
> 
>    Orphan format arguments: args[0..1]
Hm... maybe a runtime error? I didn't think the compiler knows to 
complain about this.
> 
> What? Is that a bug in format? It can't be because the string should be 
> concatenated by the compiler as a single string, no? No: operator dot 
> has precedence over ~, so format is applied to the second part of the 
> string before the concatenation. Doh! This puzzled me a lot.
Yes, in fact that is kind of a difference from previous 
"auto-concatenation" if you just put whitespace between the strings.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list