2012-02-04 41 views
6

Tôi đang cố gắng tạo một hàm thuần túy nhúng một số vào một chuỗi. Các phương pháp ghép nối rõ ràng không hoạt động:Tôi có thể ghép nối một số và chuỗi không?

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

Có cách nào gọn gàng, chức năng để nối một số và chuỗi không? Tôi muốn tránh viết chức năng nối hoặc chuyển đổi của riêng tôi, nhưng tôi sẽ làm thế nào nếu tôi phải làm như vậy.

Trả lời

4

Điều này có vẻ là sự cố lâu dài với !. (Xem this báo cáo lỗi.)

Theo như tôi có thể biết, không có chức năng thuần túy phù hợp trong Phobos. Tôi sợ bạn là của riêng bạn.


Chỉnh sửa từ OP: tôi đã sử dụng một chức năng như thế này để chuyển đổi 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; 
} 
Các vấn đề liên quan