2012-02-04 28 views
6

मैं एक शुद्ध कार्य करने की कोशिश कर रहा हूं जो एक स्ट्रिंग में एक संख्या को एम्बेड करता है। स्पष्ट संयोजन विधियां काम नहीं करती:क्या मैं कार्यात्मक रूप से एक संख्या और स्ट्रिंग को जोड़ सकता हूं?

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

वहाँ एक साफ, कार्यात्मक एक नंबर और स्ट्रिंग को श्रेणीबद्ध करने के लिए रास्ता नहीं है? मैं अपने स्वयं के संयोजन या रूपांतरण समारोह लिखने से बचना चाहता हूं, लेकिन अगर मुझे करना होगा तो मैं करूँगा।

उत्तर

4

यह के साथ एक लंबे समय तक चलने वाली समस्या प्रतीत होता है!। (this बग्रेपोर्ट देखें।)

जहां तक ​​मैं कह सकता हूं, फोबोस में कोई मिलान करने वाला शुद्ध कार्य नहीं है। मुझे डर है कि आप अपने ही हैं। ओपी से


संपादित करें: मैं इस तरह एक समारोह के लिए इस्तेमाल किया strings को uints कन्वर्ट करने के लिए।

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; 
}