如果我尝试输入:
enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) {
API_DirectX(0),
API_OpenGL(1)
}
fun EGraphicsAPIConvention.of(i: Int) = values().first { it.i == i }
编译器抱怨:
未解决的参考值
this.values()
没有任何帮助
为什么我没有values()
?
答案 0 :(得分:3)
fun EGraphicsAPIConvention.of(i: Int)
正在向所有EGraphicsAPIConvention
个实例添加an extension method,以便您可以撰写EGraphicsAPIConvention. API_DirectX.of(1)
。
Kotlin目前没有提供在类级别编写扩展函数的方法。
但是,您可以使用companion object
来获得所需的行为:
enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) {
API_DirectX(0),
API_OpenGL(1);
companion object {
fun of(i: Int) = values().first { it.i == i }
}
}
然后使用它:EGraphicsAPIConvention.of(0)