요즘은 Kotlinboot 를 이용해서 Kotlin 기반 프로그램을 만들고 있어서 그런지 많은 것들을 공부하게 되네요.
일단 이 함수가 무엇이냐고 생각이 드시죠?
firstOrNull는 Kotlin Collection에서 사용되는 함수 중 하나로, 주어진 조건을 만족하는 첫 번째 요소를 반환하거나 조건을 만족하는 요소가 없는 경우에는 null을 반환합니다.
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
// 2로 나누어 떨어지는 첫 번째 요소 찾기
val firstEven = numbers.firstOrNull { it % 2 == 0 }
println("First even number: $firstEven") // 출력: 2
// 10으로 나누어 떨어지는 요소 찾기 (조건을 만족하는 요소 없음)
val firstDivisibleBy10 = numbers.firstOrNull { it % 10 == 0 }
println("First number divisible by 10: $firstDivisibleBy10") // 출력: null
}
위의 예제를 보시면 이해가 바로 되실꺼에요.
하지만 개발을 하면 위의 예제가지고 어디다 써먹을지 좀 막막하잖아요 ㅋ
//가져와야하는 컬럼
val columnKeys = arrayListOf<String>(
"qustnrCompanyNm",
"respondNm",
"respondEmail",
"respondTel",
"industryType",
"employeesType",
"surveyDt",
"totalYn",
"itScore",
"otScore",
)
//내가 원하는 것만 가져오도록 처리
for ((rowNum, row) in userVOList.withIndex()) {
val dataRow = sheet.createRow(currentRow + rowNum)
for ((colNum, key) in columnKeys.withIndex()) {
val dataCell = dataRow.createCell(colNum)
val cellVal = SurveyUserInfoVO::class.memberProperties.firstOrNull { it.name == key }?.get(row)?: ""
dataCell.setCellValue(cellVal.toString())
}
}
보통 엑셀을 만들다보면 전체가 아니고 table 에서 원하는 컬럼만 가져와서 사용해야하는데 이럴때 사용하니 딱이더군요. ㅋ
위의 소스에서 보시면 또 하나 집고 넘어가야할 것은 class.memberProperties 입니다.
kotlin.reflect.full.memberProperties는 Kotlin 리플렉션(Reflection)을 사용하여 클래스의 속성(멤버 프로퍼티)를 나열하는 데 사용되는 함수입니다. Kotlin 클래스의 멤버 프로퍼티란 해당 클래스에 정의된 프로퍼티를 말합니다.
kotlin은 java와 비교해보면 정말 간결하게 해서 처리를 해주는 것 같습니다. ^^
오늘도 즐거운 코딩되세요~~
[Kotlin] try-catch 대신 사용할 수 있는 runCatching (0) | 2023.11.24 |
---|---|
[Kotlin]Lift return out of if 란 무엇인가? (0) | 2023.11.21 |
[Kotlin] mutableListOf 함수에 대한 예제 (0) | 2023.10.25 |
[Kotlin] 엘비스 연산자 (Elvis Operation) (0) | 2023.08.31 |
[Kotlin] SpringBoot 에서 다중 DataSource 적용 (0) | 2023.04.26 |