2016-12-22 8 views
5

मेरे पास एंड्रॉइड एडिटटेक्स्ट है जिसे मैं टेक्स्ट प्रॉपर्टी सेट कर रहा हूं।सेटर का उपयोग वापस करने के लिए obj.value = "" जैसे सेटर का मूल्य कैसे है?

आम तौर पर मैं प्रयोग करना होगा:

editText.text = "Mars" 

लेकिन अब ऐसा लगता है Kotlin एक स्ट्रिंग जो विफल रहता है के साथ वापस आ संपादन योग्य को बदलने के लिए कोशिश कर रहा है सेटर एक संपादन योग्य देता है।

तो "वैकल्पिक हल" है:

editText.setText("Mars") 

वहाँ पाठ सेट करते समय सेटर के इस प्रकार प्रयोग किया जाता है की किसी भी खूबसूरत तरीके (setText() के बजाय) कर रहे हैं?

उत्तर

12

कोटलिन में, असाइनमेंट अभिव्यक्ति नहीं हैं। असाइनमेंट एक्सप्रेशन में कुछ वास्तविक उपयोग के मामले होते हैं और कोड पठनीयता को खराब करते हैं, if (a = b) बग का उल्लेख नहीं करते हैं, इसलिए उन्हें भाषा से बाहर रखा गया था। आप this discussion में कोटलिन टीम से अधिक टिप्पणियां पा सकते हैं।

property = value सिंटैक्स का उपयोग करके जावा सेटटर से मूल्य वापस प्राप्त करना वास्तव में असंभव है, और आपके द्वारा वर्णित वर्कअराउंड वह मान प्राप्त करने का मान्य तरीका है।


Kotlin संपत्ति setters, बारी में, एक मूल्य वापस नहीं लौट सकते, और, उदाहरण के लिए, कॉल श्रृंखलन के लिए this मूल्य लौटने का एक आम जावा मुहावरा Kotlin functions with receiver साथ व्यक्त किया जाता है:

MyClass c = new MyClass() 
     .setFoo(x) 
     .setBar(y) 
     .setBaz(z); 

Kotlin (apply उपयोग करते हुए):

val c = MyClass().apply { 
    foo = x 
    bar = y 
    baz = z 
} 

देखें भी:

+1

जवाब और बनाम Kotlin काम भाव जावा के बारे में जानकारी के लिए धन्यवाद। –

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