hoony's web study

728x90
반응형

 

요즘은 Kotlinboot 를 이용해서 Kotlin 기반 프로그램을 만들고 있어서 그런지 많은 것들을 공부하게 되네요. 

일단 이 함수가 무엇이냐고 생각이 드시죠? 

firstOrNull 함수

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와 비교해보면 정말 간결하게 해서 처리를 해주는 것 같습니다. ^^ 

오늘도 즐거운 코딩되세요~~

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading