2015-11-25 40 views
14

में जावा कक्षाओं में स्थिर तरीकों को कैसे जोड़ा जा सकता है java.lang.Math कक्षा Kotlin में एक नई स्थैतिक विधि जोड़ना संभव है? आमतौर पर, कोटलिन में Kotlin Extensions के लिए ऐसी चीजें संभव हैं।कोटलिन

मैं पहले से ही एक फ़ाइल मैं Extensions.kt बुलाया बनाया में निम्न कार्य करने की कोशिश की:

fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double 
{ 
    return Math.max(Math.min(value,maxValue),minValue) 
} 

लेकिन Math.Companion हल नहीं किया जा सकता है ...

+2

फ़ंक्शन को डबल क्लास में क्यों नहीं जोड़ना है? 'मजेदार डबल.क्लैम्प (न्यूनतम: डबल, अधिकतम डबल) ', जिसे' 1.0.clamp (2.0, 3.0)' कहा जाता है। – nhaarman

+0

मुझे लगता है कि भविष्य में रिलीज होने में यह संभव होगा – voddan

+1

क्या coerceIn (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/coerce-in.html) आपको क्या चाहिए? –

उत्तर

7

कोटलिन 1.1 के रूप में, यह संभव नहीं है। हालांकि, भविष्य में रिलीज के लिए इसे माना जा रहा है!

इस सुविधा को लागू करने में मदद करने के लिए, इस मुद्दे पर मतदान जाना: https://youtrack.jetbrains.com/issue/KT-11968

यह विचार Kotlin समुदाय में बहुत लोकप्रिय है, इसलिए मुझे यकीन है उस में जल्द ही हो जाएगा।

+0

जो कोई भी इस जवाब में पड़ता है, कृपया जेटब्रेन पोस्ट को वोट दें ताकि हम पहले उस सुविधा को प्राप्त कर सकें! –

9

मुझे लगता है कि यह संभव नहीं है। Documentation says निम्नलिखित:

यदि किसी वर्ग के साथी वस्तु को परिभाषित किया गया है, तो आप साथी ऑब्जेक्ट के लिए एक्सटेंशन फ़ंक्शंस और गुण भी परिभाषित कर सकते हैं।

Math वर्ग एक Java वर्ग है, न कि Kotlin एक है और उस में एक companion वस्तु नहीं है। आप इसके बजाय Double कक्षा में clamp विधि जोड़ सकते हैं।