2016-07-31 10 views
8

प्रत्येक ऑब्जेक्ट में घटक 1, घटक 2, आदि जैसे प्रत्येक प्रॉपर्टी के लिए एक घटक होता है .. मैं सोच रहा था कि कक्षा के प्रत्येक घटक पर कोटलिन को फिर से चलाने का कोई तरीका है या नहीं। मेरे पास कहने के वर्ग:कोटलिन: ऑब्जेक्ट के घटकों पर इटरेट

class User(age:Int, name:String) 

मैं की तरह कुछ कर सका:

for(component in anUserObject){ 
    //do some stuff 
} 

?

उत्तर

19

सबसे पहले, componentN गुण केवल डेटा कक्षाओं पर उपलब्ध हैं, न कि प्रत्येक वस्तु पर।

वहाँ विशेष रूप से घटकों से अधिक पुनरावृत्ति के लिए कोई एपीआई है, लेकिन आप किसी भी वर्ग के गुणों से अधिक तेज़ी से दोहराने में Kotlin reflection उपयोग कर सकते हैं:

class User(val age: Int, val name: String) 

fun main(args: Array<String>) { 
    val user = User(25, "Bob") 
    for (prop in User::class.memberProperties) { 
     println("${prop.name} = ${prop.get(user)}") 
    } 
} 
+0

एक और सवाल। मैं कैसे कर सकता हूं, या ऐसा कुछ करना संभव है जैसे: prop.get (this) == prop.get (अन्य)? धन्यवाद। – Sermilion

+1

गेटर –

+1

को आमंत्रित करने के लिए आपको प्रत्येक संपत्ति को 'केप्रोपर्टी 1' पर जांचने और डालने की आवश्यकता होगी क्या यह अभी भी अद्यतित है? एक त्रुटि प्राप्त करना जिसमें कोई विशेषता सदस्य नहीं हैप्रॉपर्टीज –

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