Kotlin,铸造功能接收器

我有一对夫妇object ,如object Buffer ,提供确定的功能,我想打电话

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

在里面我有可用的,例如,由于GL_ARRAY_BUFFER object Buffer的功能

binding目前是这样定义的

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

所以我的问题是,如果有可能“铸造”T基于pair.second特定对象,以便我可以调用对象提供的那些功能?

One Solution collect form web for “Kotlin,铸造功能接收器”

根据Int值对选择T,据我所知尽可能不是。 然而,密封类是一种很好的方法来实现这种“对每个值使用不同方法的枚举”类逻辑:

 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() /* ... */ } 

然后,可以在顶级BufferType类(用于全局可用的方法)或每个单独的缓冲区类型上公开所有可用的缓冲区方法。

  • AdMob RewardedVideoAd一直在后台运行
  • 为什么字符“-9223372036854775808”(最小64位有符号整数)不被kotlin接受?
  • 我怎样才能明确表示RxJava中Flowable的完成?
  • 房间持久性@Relation在Java中工作,但不在Kolin中
  • 更新到kotlin 1.0.0-beta后,Kotlin cli应用程序无法正常工作
  • 如果我希望在Kotlin中使用类似静态函数的语法,哪种方法更好?
  • Kotlin的泛型与扩展
  • 带参数的单身人士在Kotlin
  • 使用GSON的Json的Kotlin数据类
  • 如何在Kotlin REPL中加载文件
  • TornadoFX - 使用ContextMenu右键单击选项移除项目
  • Kotlin language will be the best programming language for Android.