2017-03-19 5 views
2

私はデータクラスを持っており、私はList<String>を初期化する必要があります。私はJsonArrayの値を取得する必要があります(私はGsonを使用しています)。ラムダ式への関数

私はこの関数を作っ:

private fun arrayToList(data: JsonArray, key: String): List<String> { 
    val list = mutableListOf<String>() 

    data.forEach { a -> 
     list.add(a[key].asString) 
    } 

    return list 
} 

私はラムダ式として動作するように変換することができますどのように?

ありがとうございました。

私はあなたが map操作を探しているのだと思い

答えて

5

data.map { a -> a[key].asString } 

それとも、デフォルトのパラメータ名it使用することができます:あなたはmap機能を使用する場合は、あなたがこれを書くことができ

data.map { it[key].asString } 
+1

ありがとうございました! – allnex

3

を単一の表現として...

private fun arrayToList(data: JsonArray, key: String): List<String> = 
    data.map { it[key].asString } 

map関数はある型の引数をとり、それを別の型に変換します。私はまた、Kotlinのデフォルトの要素名がitと呼ばれているという事実を利用しています。したがって、私はJavaのように明示的に何かを定義する必要はありません。それでは、これは言うdata内の各オブジェクトに対して、key値を取得し、それに.asStringを呼ぶ」である。これは、自動的にListに変換されます。

+1

はあまりにもありがとうございました! – allnex