नीचे जेनेरिक register
विधि को देखते हुए मैं :=
ऑपरेटर को प्रतीकात्मक उपनाम के रूप में परिभाषित करना चाहता हूं।स्केल में एक विधि उपनाम के रूप में ऑपरेटर को परिभाषित करने के लिए सबसे कम संकेत क्या है?
def register[Prop <: Property[_]](prop: Prop): Prop
@inline
final def :=[Prop <: Property[_]] = register[Prop] _
मूल रूप से मैं कुछ इस तरह लिखना चाहते थे:
val := = register _
लेकिन है कि मुझे समारोह हस्ताक्षर Nothing => Nothing
देता है। मेरा अगला प्रयास इसे Prop
प्रकार के साथ पैरामीटर करना था, लेकिन यह स्पष्ट रूप से केवल तभी काम करता है जब मैं इसे def
बनाता हूं, जो टाइप पैरामीटर ले सकता है और उन्हें आगे भेज सकता है।
आदर्श रूप से मैं @inline
एनोटेशन को छोड़ना चाहता हूं लेकिन मुझे यकीन नहीं है कि स्कैला कंपाइलर किस ऑब्जेक्ट कोड से बाहर निकलता है।
सबसे महत्वपूर्ण मेरा लक्ष्य यह :=
विधि नाम के अलावा register
विधि के हस्ताक्षर के सभी भागों नकल और फिर बस बाद के पूर्व प्रतिनिधि जाने के लिए नहीं है।
डुप्लीकेट हस्ताक्षर वाले विधि प्रतिनिधिमंडल ठीक वही है जो मैं टालना चाहता था। मेरा अंतिम अनुच्छेद "सबसे महत्वपूर्ण ..." देखें। इसके अलावा मैं किसी भी तर्क को मैन्युअल रूप से अग्रेषित नहीं करना चाहता हूं। –
@TimFriske दुर्भाग्य से, आपको यह करना होगा, अगर आप ऐसा करना चाहते हैं। –