james
03/04/2020, 3:58 AM* DatabaseKennelModel
+ dogs: List<DatabaseDogModel>
* DatabaseDogModel
+ name: String
* Kennel
+ dogs: List<Dog>
* Dog
+ name: String
Is there a better way to transform a List<DatabaseKennelModel>
into a List<Kennel>
, than the following:
databaseKennelModelList.map { databaseKennelModel ->
Kennel(
dogs = databaseKennelModel.dogs.map { databaseDogModel ->
Dog(
name = databaseDogModel.name
)
}
)
}
☝️ it works, but I'm wondering is there anything I can do to avoid that nested map
?Tim Malseed
03/04/2020, 4:23 AMDatabaseKennels
into Kennels
and a list of DatabaseDogs
into Dogs
, so you can’t really avoid two transformation functions (two maps)Tim Malseed
03/04/2020, 4:27 AMjames
03/04/2020, 6:13 AMDave K
03/04/2020, 4:52 PMfun List<DatabaseKennelModel>.toKennelList() = this.map { Kennel(dogs = it.dogs.ToDogList()) }
fun List<DatabaseDogModel>.toDogList() = this.map { Dog(name = it.name) }
but that just changes the way it looks.
You could as easily also make a similar but for operating on Kennel or Dog directly
fun DatabaseKennelModel.toKennel() = Kennel(dogs = this.dogs.map { it.toDog() })
fun DatabaseDogModel.toDog() = Dog(name = this.name)
and then call it as
databaseKennelModelList.map { it.toKennel() }
It depends if your concern is around performance, how it looks, maintainability, or some other concern?
But I agree with above, nothing looks wrong with your current approach