Kotlin, receptor de funciones de casting

Tengo un par de object , como el object Buffer , que ofrece funciones determinadas y me gustaría llamar

 binding(bufferName[Buffer.VERTEX] to GL_ARRAY_BUFFER) { ... // calling Buffer functions } 

donde dentro tengo disponible, por ejemplo, las funciones del object Buffer debido al GL_ARRAY_BUFFER

binding es en este momento tan definido

 inline fun <T, R> binding(pair: Pair<Int, Int>, block: T.() -> R) 

Entonces mi pregunta es si es posible "lanzar" T a un object específico basado en pair.second para que pueda llamar a esas funciones que ofrece el object.

De acuerdo con mi mejor conocimiento, no es posible elegir T dependiendo del pair.second valores Int. pair.second . Sin embargo, las classs selladas son una buena forma de implementar este tipo de lógica de "enum con diferentes methods para cada valor":

 sealed class BufferType(val type: Int) { class ArrayBuffer() : BufferType(GL_ARRAY_BUFFER) class AtomicCounterBuffer() : BufferType(GL_ATOMIC_COUNTER_BUFFER) /* other buffer types... */ } inline fun <Buffer: BufferType, R> binding(pair: Pair<Int,Buffer>, block : (Buffer) -> R) { glBindBuffer(pair.second.type, pair.first) block() /* ... */ } 

A continuación, puede exponer todos los methods de búfer disponibles en la class BufferType nivel superior (para methods disponibles a nivel mundial) o en cada tipo de búfer individual.

  • Aplicación de Android sin classs?
  • ¿Kotlin tiene un recolector de basura? Si es así, ¿en qué algorithm está basado?
  • ¿Cómo migrar de Gradle a Kobalt?
  • Error: ejecución fallida para la tarea ': app: compileDebugKotlin'. > Error de compilation. Ver logging para más detalles
  • ¿Cómo hacer una list de las annotations de campo en Kotlin?
  • split kotlin de arguments nullable
  • Kotlin smart cast no funciona para LinearLayout.LayoutParams
  • Cómo crear una vista con tabs en anko
  • El proyecto no se comstackrá con Kotlin 1.1.3
  • Error de inyección de Android Kotlin dagger 2 ViewModel
  • Herramientas de análisis estático para el lenguaje de progtwigción Kotlin?