स्कैला के लिए नया और एक मुहावरेदार समाधान के लिए पॉइंटर्स की तलाश में, यदि कोई है तो।रनटाइम पर स्कैला अभिव्यक्ति को संकलित/eval कैसे करें?
मैं कुछ डेटा पर लागू मनमाने ढंग से उपयोगकर्ता द्वारा आपूर्ति किए गए स्कैला फ़ंक्शन (जिन्हें मेरे कोड में परिभाषित कार्यों/कक्षाओं को संदर्भित करने की अनुमति है) रखना चाहते हैं।
उदाहरण के लिए: मेरे पास और bar(s: String): String
मेरे myprog.scala
में परिभाषित फ़ंक्शन हैं। उपयोगकर्ता इस तरह मेरी कार्यक्रम चलाता है:
$ scala myprog data.txt --func='(s: Str) => foo(bar(s)).reverse'
इस डेटा फ़ाइल के माध्यम से लाइन द्वारा लाइन चलाने के लिए और है कि लाइन के लिए उपयोगकर्ता द्वारा निर्दिष्ट समारोह को लागू करने के परिणाम का उत्सर्जन होता है।
अतिरिक्त अंक के लिए, क्या मैं यह सुनिश्चित कर सकता हूं कि उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन में कोई दुष्प्रभाव नहीं हैं? यदि नहीं, तो क्या मैं फ़ंक्शन को केवल फ़ंक्शंस का प्रतिबंधित सबसेट (जिसे मैं सुरक्षित होने का आश्वासन देता हूं) का उपयोग करने के लिए प्रतिबंधित कर सकता हूं?
मैं देखता हूं कि कैसे freenode पर lambdabot लिखा है, आपकी समस्याएं समान लगती हैं। – Reactormonk