में वैकल्पिक xml विशेषताओं को प्रोसेस करना मेरे पास एक XML फ़ाइल पढ़ने वाला कोड है। उन तत्वों के कुछ गुण जिन्हें मुझे संसाधित करने की आवश्यकता है वे वैकल्पिक हैं। मैं उन्हें प्रबंधित करने के लिए विकल्प [टी] का उपयोग करने की कोशिश कर रहा हूं। मैं लिखा है \
नोड ऑपरेटर द्वारा दिया NodeSeq प्रकार दलाल करने के लिए निम्नलिखित:स्कैला
(node \ "@attr").textOption.getOrElse("Some default value")
नोड "attr" विशेषता है, तो यह कोड:
class NodeSeqWrapper(nodeSeq: NodeSeq) {
def textOption: Option[String] = {
val text = nodeSeq.text
if (text == null || text.length == 0) None else Some(text)
}
}
implicit def nodeSeqWrapper(nodeSeq: NodeSeq): NodeSeqWrapper =
new NodeSeqWrapper(nodeSeq)
और उसके बाद इस तरह इसे कहते यह मूल्य प्राप्त करता है। यदि ऐसा नहीं होता है, तो मान "कुछ डिफ़ॉल्ट मान" वापस कर दिया जाता है।
मैं इसे कैसे सुधार सकता हूं? क्या पाठ्यक्रम परिभाषा को अंतर्निहित विधि में फोल्ड करने का कोई तरीका है? क्या "वैकल्पिक" विशेषता मान प्राप्त करने का कोई बेहतर तरीका है? क्या मैं Option[T]
"सही" का उपयोग कर रहा हूं?
आप अपनी विधि 'टेक्स्टऑप्शन' को उसी शैली में 'सेक' के 'हेड' और 'हेडऑप्शन' विधियों के रूप में कॉल करना चाह सकते हैं। –
अच्छा लगता है। मैं अपना कोड बदल दूंगा। प्रश्न भी अपडेट कर रहा है। – Ralph