반응형 Kotlin Language55 안드로이드 코틀린의 코루틴 ( Kotlin Coroutine ) ? #1 코루틴? (Coroutine) 동시성 프로그래밍 개념을 코틀린에 도입한 것이 코루틴입니다. 사용되어지고 있는 쓰레드를 중단하지 않으면서 비동기적으로 실행되게하는 코드입니다. 복잡한 AsyncTask 또는 다수 불필요한 쓰레드 관리를 직접 해주지 않아도 되며, 더 효율적으로 동작합니다. 코루틴의 기능 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다. 구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행합니다. 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달됩니다. 많은 Jetpack 라이브러리에 코루틴을 완전히 지원하는 확장 프로그램이 포함되어 있습니다. 일부 라이브.. 2023. 12. 22. default_web_client_id 에러, Firebase 의 Google Login 기능 oauth_client에서 client_id 생성 안되는 문제 default_web_client_id 빨간줄 에러 왜 발생할까? Firebase Google Login 기능을 구현하는 과정에서의 코드를 살펴 보겠습니다. default_web_client_id 값을 가져오는 과정에서, 해당 리소스를 찾지 못하거나, 경로를 찾지 못하여 발생하는 오류입니다. 해결 방안 먼저 프로젝트 경로로 변경한 뒤, google-services.json 파일을 열어보겠습니다. 문서를 열게되면, id 값이 없습니다. 이제 본격적으로 해결하러 https://console.firebase.google.com 로 이동하여 Authentication로 이동합니다. 그 후, Sign-in method > 세 제공업체 추가를 선택합니다. Google을 선택한 뒤 저장합니다. 이제 제대로 저장이 되.. 2023. 12. 20. kotlin-android-extensions 에러 kotlin-android-extensions ? Kotlin 안드로이드 확장으로서, 안드로이드 애플리케이션 개발을 단순화하기 위해 Kotlin에서 제공하는 기능 중 하나입니다. 이 확장은 XML 레이아웃 파일과 Kotlin 코드 간에 편리한 상호 작용을 지원합니다. 기능 레이아웃 바인딩(View Binding): kotlin-android-extensions는 레이아웃 바인딩과 유사한 기능을 제공합니다. 이는 XML 레이아웃 파일의 뷰 요소들을 Kotlin 코드에서 직접 참조할 수 있도록 해주는 기능입니다. 레이아웃 바인딩을 사용하면 더 나은 타입 안전성과 성능을 얻을 수 있지만, 간단한 프로젝트에서는 kotlin-android-extensions를 통해 편리하게 뷰에 접근할 수 있습니다. 프로퍼티 익.. 2023. 12. 18. Kotlin(코틀린) - 오브젝트(Object, Companion Object) Object? object 키워드는 싱글톤, 클래스의 단일 인스턴스를 선언할 때 사용됩니다. 클래스를 선언하고 동시에 해당 클래스의 인스턴스를 생성하는 것과 유사합니다. 오브젝트는 하나의 인스턴스만 있는 클래스를 만들 때 사용됩니다. object MySingleton { fun doSomething() { println("작업 중...") } } //사용하고자 호출할 때 MySingleton.doSomething() Companion Object? companion object는 포함된 클래스의 인스턴스와 결합된 특수한 종류의 오브젝트입니다. companion object의 멤버는 클래스 이름을 사용하여 직접 액세스할 수 있습니다. 클래스와 관련된 정적 메서드 및 상수를 그룹화하는 데 사용됩니다. cla.. 2023. 12. 8. Kotiln(코틀린) - 반복문(forEach) forEach ? Kotlin에서 반복문을 사용할 때 흔히 쓰이는 고차함수 중 하나입니다. 이 함수는 컬렉션의 각 요소에 대해 주어진 람다 표현식을 실행하는 역할을 합니다. Kotlin에서는 forEach를 사용하여 배열이나 리스트와 같은 Iterable 객체를 반복하는데 주로 활용합니다 배열 또는 리스트에서 사용하며, 직관적이고 코드 가독성이 뛰어납니다. 기본적인 형태 val numbers = listOf(1, 2, 3, 4, 5) numbers.forEach { // 각 요소에 대한 작업을 수행 println(it) } forEach는 numbers 리스트의 각 요소에 대해 중괄호 안에 있는 람다 표현식을 실행합니다. it은 현재 반복되고 있는 요소를 나타내는 람다의 암시적인 인자입니다. 코드에서는 .. 2023. 12. 8. Kotlin(코틀린) - 제네릭(Generic) 제네릭(Generic) 타입을 매개변수로 받아서 코드를 작성할 수 있게 하는 프로그래밍 기법입니다. 즉, 함수나 클래스를 선언할 때, 구체적인 타입을 지정하는 대신에 추상적인 타입 매개변수를 사용하여 타입에 독립적인 코드를 작성할 수 있도록 해줍니다. 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 자료형을 선택할 수 있게 해주는 것입니다. 앵글 브래킷 사이에 형식 매개변수를 사용해 선언하며, 여기서 형식 매개변수는 자료형을 대표하는 용어로 T와 같이 특정 영문의 대문자를 사용합니다. 형식 매개변수 이름 규칙 앵글 브래킷 사이에 형식 매개변수를 넣어 선언합니다. 자료형을 대표하는 T와 같이 특정 영문의 대문자로 사용하며 나중에 피룡한 자료형으로 대체합니다 E(Element), .. 2023. 12. 7. Kotlin(코틀린) - 확장함수(Extension functions) 확장함수(Extension Functions)? 이미 존재하는 클래스에 새로운 함수를 추가하는 메커니즘을 제공합니다. 이는 기존 클래스를 수정하지 않고도 해당 클래스에 새로운 기능을 추가할 수 있는 강력한 기능입니다. 확장 함수는 클래스의 멤버 함수처럼 호출될 수 있으며, 새로운 기능을 제공하기 위해 클래스 외부에서 정의됩니다. 확장함수는 언제 사용할 수 있을까? 확장 함수는 주로 기존 클래스나 라이브러리를 수정할 수 없는 상황에서 새로운 기능을 추가하거나 사용성을 향상시킬 때 유용하게 사용됩니다. 외부 라이브러리를 확장하여 해당 라이브러리가 제공하지 않는 기능을 쉽게 추가하거나, 코드의 가독성을 높이기 위해 유틸리티 함수를 만들 때 확장 함수를 활용할 수 있습니다. 확장 함수는 이미 존재하는 클래스에 .. 2023. 12. 7. Kotlin(코틀린) - 지연 초기화(lateinit , lazy) 지연 초기화 ( lateinit, lazy ) ? lateinit과 lazy는 모두 Kotlin에서 변수를 지연 초기화하는 데 사용되는 기술입니다. 그러나 두 가지 기술은 목적과 사용법에서 차이가 있습니다. 두 기능은 초기화를 나중으로 미루는데 사용되지만, lateinit은 초기화 이전에는 사용할 수 없고, lazy는 처음 사용될 때 초기화되며 이후에는 더 이상 초기화하지 않습니다. 선택은 상황과 목적에 따라 다르며, lateinit은 var 변수에, lazy는 val 변수에 사용됩니다. lateinit lateinit은 주로 클래스의 프로퍼티에 사용되며, 선언 이후 어느 시점에서나 초기화할 수 있는 기능을 제공합니다. 주로 의존성 주입이나 특정 메서드에서 초기화해야 하는 경우에 사용됩니다. class .. 2023. 12. 7. Kotlin - 두 정수 사이의 합 ( 22 ) 프로그래머스 문제 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. a b return 3 5 12 3 3 3 5 3 12 코틀린 두 정수 사이의 합 답 1) class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 if (a b) { for (i in b..a) { answer += i } } else { answer = a.toLong() } return answer }.. 2023. 12. 7. 이전 1 2 3 4 ··· 7 다음 728x90 반응형