मैं एक समारोह को जीएलएसएल में किसी अन्य समारोह के लिए तर्क के रूप में उपयोग करने का एक तरीका ढूंढ रहा हूं। नियमित सी में, फ़ंक्शन पॉइंटर को फ़ंक्शन तर्क के रूप में पास करके अनुकरण किया जा सकता है। ऐसा लगता है कि अन्य भाषाएं (जैसे एचएलएसएल) अब उच्च-स्तरीय संरचनाओं जैसे उच्च-स्तरीय संरचनाओं से निपटने के तरीके प्रदान करती हैं, या उन्हें clever use of HLSL structures के साथ अनुकरण कर सकती हैं। दुर्भाग्य से मैं अब के लिए जीएलएसएल के साथ फंस गया हूं, और मुझे उच्च-आदेश कार्यों को अनुकरण करने का कोई तरीका नहीं मिल रहा है। क्या वर्तमान में यह वास्तव में असंभव है (4.2) जीएलएसएल? या क्या मुझे कुछ चालाक चाल याद आ रही है? मैं क्या हासिल करने की कोशिश कर रहा हूँ कीजीएलएसएल में दूसरा ऑर्डर फ़ंक्शन?
सामान्य उदाहरण:
int f(someType f2, int i) {
return f2(i);
}
और आपको प्राप्त करने के लिए, एक शेडर में इस तरह की (शायद महंगा) संकेत की आवश्यकता है ...? –
इस तथ्य के अलावा कि इस प्रकार का अमूर्त उपयोग करने के लिए मीठा होगा, मेरे पास व्यावहारिक समस्या निम्न है: मेरे पास एक फ़ंक्शन f है जो पैरामीटर पी (चलो कहता है, एक int) पर स्विच करता है, और एक और फ़ंक्शन f2 कहता है , जो प्रकृति स्विच मूल्य पर निर्भर करती है। एक तर्क के रूप में f2 को पारित करने में सक्षम होने से मुझे स्विचिंग के बिना सीधे कॉल करने की अनुमति मिलती है, क्योंकि मेरे आवेदन के संदर्भ में, मुझे पता है कि एफ को कॉल करते समय वास्तव में कौन सा फ़ंक्शन कॉल करना है। मुझे वास्तव में पता नहीं है कि यह संभव है, न ही इसका क्या खर्चा होगा, लेकिन मुझे लगता है कि 100-मामले स्विच पर जाना शायद बदतर है। –
https://en.wikipedia.org/wiki/Defunctionalization – sigfpe