2012-02-04 14 views
6

Sto cercando di creare una funzione pura che incorpori un numero in una stringa. I metodi di concatenazione evidenti non funzionano:Posso concatenare funzionalmente un numero e una stringa?

pure string foo(immutable int bar) 
{ 
    return "Number: " ~ bar; // Error: strings and ints are incompatible. 
    return "Number: " ~ to!string(bar); // Error: to() is impure. 
} 

Esiste un modo pulito, funzionale per concatenare un numero e stringa? Vorrei evitare di scrivere la mia propria concatenazione o funzione di conversione, ma lo farò se dovessi farlo.

risposta

4

Questo sembra essere un problema di vecchia data con to!. (Vedere this segnalazione bug.)

Per quanto posso dire, non ci sono funzioni pure corrispondenti in Phobos. Temo che tu sia da solo.


Modifica dal OP: ho usato una funzione come questa per convertire uints-strings.

import std.math: log10; 

pure string convert(uint number) 
{ 
    string result; 
    while (log10(number) + 1 >= 1) 
    { 
     immutable uint lastDigit = number % 10; 
     result = cast(char)('0' + lastDigit) ~ result; 
     number /= 10; 
    } 
    return result; 
} 
Problemi correlati