En Kotlin puedes hacer algo como esto:
val s: String = "Hey" println(s[1])o simplemente:
println("Hey"[1]) y usted imprimirá e .
Pero, ¿qué sucede si desea extender este comportamiento a sus propias clases? ¿Qué interfaz necesita implementar para lograr esta sintaxis?
Examiné los supertipos de String y solo encontré Comparable<String> y CharSequence , ninguno de los cuales tenía otros supertipos, por lo que mi búsqueda terminó temprano.
Por ejemplo, en Python, al definir un método llamado __getitem__ en una clase, puede otorgar a los objetos de esa clase la capacidad de usarse con una sintaxis de corchetes como esta a[i] ; Me preguntaba cómo era posible esto en Kotlin.
Gracias por adelantado.
Puede usar la sobrecarga de operadores de Kotlin, específicamente la sobrecarga para operadores de acceso indexado .
La sintaxis "Hey"[1] es solo un alias para "Hey".get(1) (si no está en el lado izquierdo de una tarea, donde sería un alias para "Hey".set(1, ...) ).
Aparentemente, basta con tener un método get(i: Int) . Interesante...