मैं डोमेन विशिष्ट भाषाओं पर कुछ किताबें और संसाधन देख रहा हूं। मुझे लगता है कि मैं स्कैला में एक आंतरिक डीएसएल बनाना चाहता हूं।स्कैला में एक आंतरिक डीएसएल कैसे बनाएं?
def instrument = new FXInstrument {
provider = "EuroBase"
instrumentOrders = List(
new FXOrder {
baseCcy = "GBP"
termCcy = "EUR"
legs = List(
new FXLeg {
amountPrice = 100000.0
spotPrice = 1.56
requirements = List(
new FXRequirement {
baseCcy="GBP" termCcy="EUR"
settlement="Banker Rain"
}
)
},
new FXLeg {
amountPrice = 200000.0
spotPrice = 1.50
requirements = List(
new FXRequirement {
baseCcy="GBP" termCcy="EUR"
settlement="Banker Sunny"
}
)
}
)
}
}
इस तरह की है कि निम्न दावा मान्य हैं:
instrument.orders(0).baseCcy should equal ("GBP")
instrument.orders(0).termCcy should equal ("EUR")
instrument.orders(0).legs(0).amountPrice should equal 100000.0
instrument.orders(0).legs(0).spotPrice should equal 1.56
instrument.orders(0).legs(1).amountPrice should equal 200000.0
instrument.orders(0).legs(1).spotPrice should equal 1.50
instrument.orders(0).legs(0).requirements(0).settlement should equal "Banker Rain"
instrument.orders(0).legs(1).requirements(0).settlement should equal "Banker Sunny"
मैं बस नहीं जानता कि काफी कैसे एक आंतरिक प्रतिनिधित्व
1) नई FXOrder() {डोमेन विशिष्ट भाषा को लागू करने/बंद /}
मुझे यह वाक्यविन्यास पसंद है, क्या यह अच्छा है या मुझे साथी वस्तुओं को प्राथमिकता देना चाहिए। उदाहरण के लिए मैं जल्दी से अन्य एफएक्स प्रकारों को आसानी से पेश कर सकता हूं।
2) मैं "साथियों" इस तरह के FXOrder उपयोग करना चाहते हैं, एक scala.Proxy mixee है इस प्रकार यह का उपयोग करता है विशेषता प्रॉक्सी (mixin)
उदाहरण के लिए `` instrument.peer '' आंतरिक सहकर्मी जावा वस्तु देता है तीसरे पक्ष के मालिकाना एपीआई के लिए (एक प्रसिद्ध वित्तीय सेवा व्यापार प्रणाली, आप अनुमान लगा सकते हैं?)
डिट्टो
instrument.orders (0) .peer instrument.orders (0) .legs (0) .peer instrument.orders (0) .legs (0) .requirements (0) .peer
और इसी तरह से।
मुझे एहसास है कि डोमेन विशिष्ट भाषा उतनी सरल नहीं है जितनी मैंने सोचा था, हालांकि ऊपर दिए गए कुछ पॉइंटर्स वास्तव में उपयोगी होंगे। मैं आपकी प्रतिक्रियाओं की सराहना करता हूं। टा!
पीपी
आप http://programming-scala.labs.oreilly.com/ch11.html#InternalDSLs –