2016-10-28 16 views
1

私が入力しようとした場合:列挙子の拡張機能 `values()`は利用できませんか?

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

'EGraphicsAPIConvention.valuesを()'でしょうか? – Lovis

答えて

3

fun EGraphicsAPIConvention.of(i: Int)は、EGraphicsAPIConvention. API_DirectX.of(1)と書くことができるように、すべてインスタンスにan extension methodを追加しています。

現在、Kotlinはクラスレベルで拡張機能を作成する方法を提供していません。

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 } 
    } 
} 

し、それを使用します:あなたがそうのような目的の動作を取得するためにcompanion objectを利用することができますしかし

EGraphicsAPIConvention.of(0)

+0

ありがとう、私は8m前にそれを受け入れることができない – elect

関連する問題