क्या C++ लैम्ब्डा एक्सप्रेशन को प्रिंट करने का कोई तरीका है और इसके द्वारा दर्शाए जाने वाले फ़ंक्शन का टेक्स्ट पर प्रस्तुतिकरण देखने का कोई तरीका है? यहाँ एक सरल उदाहरण है जो दिखा रहा है कि मेरा क्या मतलब है:

#include <iostream>
#include <functional>

const char *toString(const std::function<int(int)> &f)
{
    // then a magic happens ...
    return "if (...) { ... }";
}
int main(int argc, char **argv)
{
    auto f1 = [=](int i){ if (i<5) {return 8*2;} else {return 2;} };
    auto f2 = [=](int i){ if (i>3) {return i*i;} else {return 7;} };
    std::cout << toString(f1) << "\n";
}

इसे हासिल करने का कोई तरीका?

0
OrenIshShalom 18 अप्रैल 2020, 11:35

1 उत्तर

सबसे बढ़िया उत्तर

नहीं वहाँ नहीं है। C++ किसी भी प्रकार की प्रतिबिंब के बिना एक भाषा है। इस तरह के समारोह को लागू करना असंभव है।

संभावित कामकाज में लैम्ब्डा स्रोतों को आपके प्रोग्राम में स्ट्रिंग अक्षर में डालना या उदाहरण के लिए आपके प्रोग्राम से स्रोत फ़ाइल पढ़ना शामिल है।

1
KamilCuk 18 अप्रैल 2020, 09:17