इन दो तत्वों पर विचार करें:एक अक्का में स्काला में विशेषता व्यवहार लिखना प्राप्त विधि
trait Poked extends Actor {
override def receive = {
case Poke(port, x) => ReceivePoke(port, x)
}
def ReceivePoke(port: String, x: Any)
}
trait Peeked extends Actor {
override def receive = {
case Peek(port) => ReceivePeek(port)
}
def ReceivePeek(port: String)
}
अब विचार करें मैं एक नया अभिनेता है कि दोनों लक्षण लागू करता है बना सकते हैं:
val peekedpoked = actorRef(new Actor extends Poked with Peeked)
मैं कैसे लिखूं हैंडलर प्राप्त करें? जैसे कि, रिसीवर, निम्नलिखित कोड की तरह कुछ किया जाना चाहिए, हालांकि "स्वचालित रूप से उत्पन्न" (यानी, सभी लक्षण रचना होना चाहिए):
def receive = (Poked.receive: Receive) orElse (Peeked.receive: Receive) orElse ...
कि बहुत दिलचस्प है, आप :-) धन्यवाद लेकिन यह एक प्रकार IntOrString है कि दोनों एक इंट और एक स्ट्रिंग के पूर्व अस्तित्व को मानता है, और कहा कि IntOrString जानता है कि यह रचना चाहिए वे (जो, अगर मैं एक ढांचा बना रहा हूं, तो दूसरा अनदेखा कर सकता है)। इंटैक्टर और स्ट्रिंगएक्टर लक्षण स्वचालित रूप से लिखना संभव नहीं है? –
ऑर्डर मिश्रित लक्षणों के रैखिकरण द्वारा दिया गया है, इसलिए "अनुमानित" ;-) और प्रीपेडिंग मैचों का उपयोग बाद के लक्षणों के ओवरराइडिंग के माध्यम से किया जाता है। पहले वाले, तो मुझे लगता है कि आपका समाधान बहुत अच्छा है! –
अपने स्केला फू के उत्कृष्ट प्रदर्शन! :-) –