Kotlin Koans 에서 Introduction 부분의 문제를 풀고 공부한 내용을 정리한 글 입니다.
val numbers = listOf("one", "two", "three", "four")
val longerThan3 = numbers.filter { it.length > 3 }
println(longerThan3)
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)
val filteredMap = numbersMap.filter { (key, value) -> key.endsWith("1") && value > 10}
println(filteredMap)
/**
결과
[three, four]
{key11=11}
**/
filter 함수에는 조건자와 함께 호출하면 필터에 일치하는 값만 반환한다.
list와 set 모두 List형태로 반환되고 map을 map으로 반환된다.
endsWith()
startWith()
끝과 처음이 어떤 글자인지 확인 , 리턴값 boolean
val numbers = listOf("one", "two", "three", "four")
val filteredIdx = numbers.filterIndexed { index, s -> (index != 0) && (s.length < 5) }
val filteredNot = numbers.filterNot { it.length <= 3 }
val numbers = listOf(null, "one", "two", null)
numbers.filterNotNull().forEach {
println(it.length) // length is unavailable for nullable Strings
}
println(filteredIdx)
println(filteredNot)
/**
결과
3
3
[two, four]
[three, four]
**/
filterIndexed()
인덱스 값을 같이 확인하는 함수
filterNot()
부정값
filterNotNull()
Null이 아닌값만 뽑아 줌
val numbers = listOf(null, 1, "two", 3.0, "four")
println("All String elements in upper case:")
numbers.filterIsInstance<String>().forEach {
println(it.uppercase())
}
/**
결과
All String elements in upper case:
TWO
FOUR
**/
일치하는 타입값의 값들만 뽑아 줌. any를 적으면 모든 값이 다 반환되고
string이면 문자열만 double이면 double만!
val numbers = listOf("one", "two", "three", "four")
val (match, rest) = numbers.partition { it.length > 3 }
println(match)
println(rest)
/**
[three, four]
[one, two]
**/
리스트로 반환되며 앞에는 true 값이 뒤에는 false값이 저장됩니다.