2012-11-27 26 views
7

निम्नलिखित कोड:कक्षा में कई बार एक विशेषता का उपयोग कैसे करें?

Trait method bar has not been applied, because there are collisions with other trait methods on C

क्या यह संभव है एक विशेषता एक कक्षा में दो बार उपयोग करने के लिए:

trait T { 
    function foo() {} 
} 

class C { 
    use T { T::foo as bar; } 
    use T { T::foo as baz; } 
} 

निम्न त्रुटि उत्पन्न करता है?

उत्तर

6

करने के लिए "आयात" एक विधि एक विशेषता के रूप में परिभाषित कई अलग अलग नामों के साथ कई बार ऐसा करते हैं:

class C { 
    use T { 
    foo as bar; 
    foo as baz; 
    } 
} 
+0

कि यह था! धन्यवाद। – Benjamin

+1

मैं देख सकता हूँ जहाँ सवाल से आता है, लेकिन इस समाधान के साथ आप बस बिल्कुल वैसा ही कार्यक्षमता के साथ 2 कार्यों, ठीक उसी आंतरिक साथ काम करना। आप 2 फ़ंक्शंस क्यों चाहते हैं जो बिल्कुल वही करते हैं? यह शांत करता है, तो "बार" समारोह विभिन्न वर्ग "baz" समारोह की तुलना में विशेषताओं का उपयोग होगा (ताकि बार और baz वास्तव में एक ही है, लेकिन दो बार), लेकिन यह मामला नहीं है? – Veda

+0

मुझे लगता है कि यह ज्यादातर एक सैद्धांतिक सवाल है, इसलिए बहुत ही सरल जवाब था। –

0

हाँ, आप दो बार एक विशेषता का उपयोग कर सकते हैं:

trait T { 
    function foo() {} 
} 

class C { 
    use T { T::foo as bar; T::foo as baz; } 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^