2017-06-01 4 views
2

ここで初心者です。誰も値とvalueOfメソッドを持つ列挙型を反復する例を与えることができますか?kotlinのvalues()とvalueOfを使用して列挙値を反復する

これは

enum class Gender { 
    Female, 
    Male 
} 

私の列挙型クラスである私たちは、この

Gender.Female 

のような値を得ることができます知っているしかし、私は性別のすべての値を反復処理し、表示したいです。どうすればこれを達成できますか?あなたは簡単にすべての値を反復処理することができます上記で

val genders = enumValues<Gender>() 

:Kotlin 1.1以降

val genders = Gender.values() 

利用できるヘルパーメソッドもありますAnyhelpはそうは次のようにあなたがvaluesを使用することができます

+1

[逆ルックアップでKotlinの有効な列挙型]の可能な複製?(https://stackoverflow.com/questions/37794850/effective-enums-in-kotlin-with-reverse-lookup) – miensol

+0

「Gender」と思われます。値() 'を私にhttps://kotlinlang.org/docs/reference/enum-classes.html#working-with-enum-constants – EpicPandaForce

+0

に従ってGender.values()はこのようなものを印刷しています[LGender; @ 2f0e140b –

答えて

3

を高く評価することができ

enumValues<Gender>().forEach { println(it.name) } 

enum値をenum値にマップするには、valueOf/enumValueOfそうのような:

val male = Gender.valueOf("Male") 
val female = enumValueOf<Gender>("Female")  
1

あなたは配列参照自体を印刷しているので、あなたがGender.values()の印刷出力として[LGender;@2f0e140bまたは類似を取得している、と配列はリストのような素敵なデフォルトtoString実装を行う必要はありません。 。

すべての値を印刷する最も簡単な方法は、次のように、その配列を反復処理することです:メソッドの参照などの

Gender.values().forEach { println(it) } 

それとも場合:

Gender.values().forEach(::println) 

ます。また、標準からjoinToStringを使用することができますライブラリを使用して、すべての値をフォーマットされた単一の文字列で表示します(接頭辞、接尾辞、区切り文字などのオプションもあります)。

println(Gender.values().joinToString()) // Female, Male 
関連する問題