मैं हाल ही में पता चला कि एक का उपयोग
दलाल
को समृद्ध मेरी लाइब्रेरी पैटर्न कर सकते हैं साथी करने के तरीकों को जोड़ने के लिए .type
का उपयोग कर वस्तुओं:मैं पैकेज ऑब्जेक्ट को कैसे समृद्ध करूं?
object Whatever { }
implicit class WhateverExtensions(val obj: Whatever.type) {
def greet = println("Hi!")
}
Whatever.greet
दुर्भाग्य से एक ही scala.math
की तरह पैकेज वस्तुओं के लिए काम करने के लिए प्रतीत नहीं होता:
Error:(153, 47) type mismatch; found : math.type required: AnyRef Note that math extends Any, not AnyRef. Such types can participate in value classes, but instances cannot appear in singleton types or in reference comparisons. implicit class MathExtensions(val obj: scala.math.type) extends AnyVal { ^:
implicit class MathExtensions(val obj: scala.math.type) {
def min(x: Money, y: Money): Money = ???
}
मैं निम्नलिखित संकलक त्रुटि मिलती है
क्या पैकेज ऑब्जेक्ट को समृद्ध करना संभव है?
ज्यादा नहीं: http://www.scala-lang.org/files/archive/spec/2.11/09-top-level- definitions.html # पैकेज वस्तुओं। उस चीज़ के प्रकार को प्राप्त करना असंभव प्रतीत होता है: 'टाइप टी =' 'math''.type' देता है "त्रुटि: (5, 12) स्थिर पहचानकर्ता आवश्यक है, लेकिन स्कैला। मिला। टाइप टी =' गणित'। प्रकार"। –
यह भी देखें: http://www.scala-lang.org/docu/files/packageobjects/packageobjects.html –