최근 JetPack Compose를 공부하다보니 처음보는 메서드를 보았습니다.
CompositionLocalProvider(LocalColor provides color) {
Composalble3()
}
여기서 LocalColor provides color라는 부분에서 provides라는 메서드가 어떤 역할을 하는지 알수없었습니다.
문서를 봐보니 이런식으로 나와 있었습니다.
provides는 infix 함수로, 특정 CompositionLocal에 값을 할당하는 데 사용됩니다. provides 함수는 CompositionLocal에 새로운 값을 연결하여 해당 값이 CompositionLocalProvider의 범위 내에서 사용될 수 있도록 합니다.
infix 메서드란?
Kotlin에서 infix 함수는 중위 호출을 허용하는 함수입니다. 이를 통해 함수 호출 시 점(.)과 괄호(()) 없이도 호출이 가능해져 코드가 더 자연스럽고 읽기 쉽게 됩니다. infix 함수는 보통 두 객체를 연결하는 동작을 표현하는 데 유용합니다.
그렇기에
CompositionLocalProvider(LocalColor provides color) {
Composable3()
}
CompositionLocalProvider(LocalColor.provides(color)) {
Composable3()
}
이는 동일한 코드입니다.
이밖에도
// to
val pair = "key" to "value" // Pair("key", "value")
// until
for (i in 1 until 5) { // 1, 2, 3, 4 (5는 포함되지 않음)
println(i)
}
// downTo와 step
for (i in 5 downTo 1 step 2) { // 5, 3, 1
println(i)
}
//shl, shr, and, or, xor
val x = 1 shl 2 // 1을 왼쪽으로 2 비트 이동시켜서 4가 됩니다.
val y = x and 0b0001 // 비트 AND 연산 수행
이러한 메서드들이 있습니다.
provides 의 역할은?
Compose에서 provides는 CompositionLocal에 특정 값을 할당하는 역할을 합니다. CompositionLocal은 컴포지션 트리의 하위 컴포저블에 값을 전달하기 위한 컨텍스트와 비슷한 역할을 합니다. provides를 사용하면 CompositionLocalProvider 범위 내의 모든 하위 컴포저블에서 이 값에 접근할 수 있습니다.
val LocalColor = compositionLocalOf { Color.Black }
@Composable
fun MyApp() {
CompositionLocalProvider(LocalColor provides Color.Red) {
// 이 범위 내에서는 LocalColor의 값이 Color.Red로 설정됩니다.
Composable3()
}
}
@Composable
fun Composable3() {
val color = LocalColor.current // 현재 값인 Color.Red를 사용
Box(modifier = Modifier.background(color)) {
// 이 Box는 배경색이 Color.Red가 됩니다.
}
}
참고
'안드로이드 > 안드로이드' 카테고리의 다른 글
안드로이드 MVVM ViewModel과 AAC ViewModel (4) | 2024.11.09 |
---|---|
안드로이드에서 UI를 업데이트 하는 방법 (0) | 2024.11.07 |
안드로이드 MVVM 카카오 로그인 이슈 (0) | 2024.11.01 |
CNA(Chirag Note App) 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리 (0) | 2024.10.02 |
CNA(Chirag Note App) 클론코딩 & 리펙토링 회고 (1) | 2024.10.01 |