코딩/코드리뷰

코틀린 mapTo

코딩하는후운 2021. 11. 18. 16:42
반응형

inline fun <T, R, C : MutableCollection<in R>> Array<out T>.mapTo(
    destination: C,
    transform: (T) -> R
): C

 

  • collection 프레임워크 사용 시 각 element들을 변형을 거쳐서 다른 collection에 쉽게 복사할 수 있는 함수입니다.
  • ex) String형 List에 있는 데이터들을 Int형 List로 옮기고 싶은 경우

var list = arrayOf("1", "2", "3", "4")

var p = ArrayList<Int>()

list.mapTo(p, { s -> s.toInt()n } )

 

println(p.toString())

결과

[1, 2, 3, 4]

 

 

  • 나의 경우는 새로운 리스트를 temp리스트를 생성해서 조건에 맞는 리스트를 넣어주는 것이었다.

viewModel.listParticipation
                                .mapTo(destination = ArrayList(), transform = { it })
                                .apply {
                                    addAll(
                                        position,
                                        item.selections
                                            ?.takeIf { it.isNotEmpty() }
                                            ?: arrayListOf(TYPE_LIST_EMPTY)
                                    )
                                }

 

 

참조 : 

https://skytitan.tistory.com/180

반응형