2016-07-31 7 views
8

Her nesnenin, component1, component2 vb. Gibi her özellik için bir bileşeni vardır. Bir sınıfın her bir bileşeni üzerinde yinelemek için Kotlin'de bir yol olup olmadığını merak ediyorum. Ben Say sınıfı:Kotlin: Nesnenin bileşenleri üzerinde yineleyin

class User(age:Int, name:String) 

ben böyle bir şey yapabilir miyiz:

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

?

cevap

19

Her şeyden önce, componentN özellikleri, her nesnede değil, yalnızca veri sınıflarında kullanılabilir.

Orada hiçbir API özellikle bileşenleri üzerinden yineleme için, ancak herhangi bir sınıfın özelliklerine tekrarlatacak Kotlin reflection kullanabilirsiniz:

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

Bir soru daha. Nasıl yapabilirim ya da aşağıdaki gibi bir şey yapmak mümkün: prop.get (this) == prop.get (other)? Teşekkür ederim. – Sermilion

+1

Gether –

+1

'u çağırmak için her özelliği bir KProperty1'de kontrol etmeniz ve göndermeniz gerekir. Bu hala güncel mi? Hiçbir özelliğe sahip olmayan bir hata alma memberProperties –