2012-02-04 14 views
6

Estoy tratando de hacer una función pura que incruste un número en una cadena. Los métodos de concatenación obvias no funcionan:¿Puedo concatenar funcionalmente un número y una cadena?

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

¿Hay una manera limpia, funcional para concatenar una serie y la cadena? Me gustaría evitar escribir mi propia función de concatenación o conversión, pero lo haré si es necesario.

Respuesta

4

Esto parece ser un problema de larga data con a!. (Consulte this informe de error.)

Por lo que puedo ver, no hay funciones puras coincidentes en Phobos. Me temo que estás solo.


Editar en el OP: que utiliza una función como esta para convertir uints a 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; 
} 
Cuestiones relacionadas