स्काला में, यदि मैं apply
किसी वर्ग या शीर्ष-स्तरीय ऑब्जेक्ट में एक विधि को परिभाषित करता हूं, तो उस पद्धति को तब बुलाया जाएगा जब मैं किसी जोड़े को उस वर्ग के उदाहरण के लिए एक कोष्ठक संलग्न करूंगा, और apply()
उनके बीच में उपयुक्त तर्क रखूंगा । उदाहरण के लिए:
class Foo(x: Int) {
def apply(y: Int) = {
x*x + y*y
}
}
val f = new Foo(3)
f(4) // returns 25
तो मूल रूप से, के object(args)
लिए सिर्फ सिंथेटिक चीनी है object.apply(args)
।
स्काला इस रूपांतरण को कैसे करता है?
क्या पूर्वनिर्धारित वस्तु (लेकिन अलग तरह से) में निहित प्रकार के रूपांतरणों के समान ही विश्व स्तर पर परिभाषित अंतर्निहित रूपांतरण हो रहा है? या यह कुछ गहरा जादू है? मैं पूछता हूं क्योंकि ऐसा लगता है कि स्काला कई नियमों के साथ कई नियमों के बजाय नियमों के एक छोटे सेट के लगातार आवेदन का दृढ़ता से पालन करता है। यह शुरू में मेरे लिए अपवाद जैसा लगता है।