본문 바로가기

Android/Kotlin10

[Android/Kotlin] 람다를 사용하는 두 가지 방식: 함수 인자와 마지막 인자 문법 Kotlin에서 함수의 마지막 인자가 람다일 때 사용할 수 있는 두 가지 스타일에 대해 알아보겠습니다. 이 두 스타일은 구문적으로 차이가 있지만 기능적으로 동일합니다. 이번 포스팅에서는 두 가지 표현의 차이점과 언제 어떤 스타일을 사용할지에 대해 설명하겠습니다.ITEM_TYPE_PROMO -> GamePromoViewHolder( inflateBinding(ItemGameListPromoBinding::inflate), getGameList = { getGameList.value }) 위 코드는 GamePromoViewHolder에 람다를 전달할 때 명시적으로 인자를 지정한 방식입니다. 반면, 아래 코드는 람다를 마지막 인자로 전달할 때 Kotlin의 문법적 편의를 활용한 예시입니다.GameP.. 2024. 9. 9.
[Kotlin] Kotlin의 apply 문법 이해하기 코틀린(Kotlin)은 간결하고 효율적인 코드를 작성하기 위해 다양한 유용한 기능을 제공합니다. 그중 하나가 바로 apply 함수입니다. 이 블로그에서는 apply 함수의 문법과 사용법에 대해 알아보겠습니다.apply 함수란?apply 함수는 코틀린의 스코프 함수 중 하나로, 객체의 초기화를 간결하고 명확하게 할 수 있게 해줍니다. 객체를 생성하고 나서, 해당 객체의 여러 속성을 설정해야 할 때 유용하게 사용됩니다.apply 함수의 문법apply 함수는 객체의 초기화 블록을 포함하여 객체 자체를 반환합니다. 이는 초기화 코드를 간결하게 작성하고, 중복을 줄이는 데 도움이 됩니다.val person = Person().apply { name = "John Doe" age = 30 addre.. 2024. 6. 24.
[Kotlin] 코틀린의 Unit 타입: 무엇이고 어떻게 사용하는가? 코틀린을 사용하다 보면 Unit이라는 타입을 접하게 됩니다. 자바의 void와 유사하지만, 코틀린에서는 조금 더 유연하게 사용할 수 있습니다. Unit이란 무엇인가?Unit은 코틀린에서 반환 값이 없음을 나타내는 특수한 타입입니다. 자바의 void와 유사하지만, 코틀린에서는 Unit도 실제로 객체로 존재하며, 단 하나의 인스턴스만 가지고 있습니다. 이 인스턴스의 이름도 Unit입니다.fun exampleFunction(): Unit { println("This function returns Unit")}exampleFunction 함수는 Unit을 반환합니다. 물론, 반환 타입을 명시하지 않아도 코틀린 컴파일러는 자동으로 Unit을 반환 타입으로 간주합니다. Unit의 실제 사용 예Unit은 주로 .. 2024. 6. 14.
[Kotlin] Kotlin에서 class와 object의 차이점 및 활용 방안: 싱글톤 패턴과 유연성 비교 Kotlin에서는 class와 object 키워드를 사용하여 클래스를 정의할 수 있으며, 이 두 방식은 중요한 차이점을 가지고 있습니다. 특히, object 키워드는 싱글톤 패턴(Singleton Pattern)을 구현하기 위해 사용됩니다. 싱글톤 패턴을 적용하면 애플리케이션 전체에서 단 하나의 인스턴스만 존재하게 되며, 이는 여러 면에서 유용합니다. 싱글톤 패턴과 objectobject로 선언된 클래스는 애플리케이션 전체에서 오직 하나의 인스턴스만을 가집니다. 이는 특히 상태를 공유하지 않는 유틸리티 메서드들이나 전역적으로 접근해야 하는 자원을 관리할 때 유용합니다. 예를 들어, 네트워크 호출과 같은 작업을 수행하는 NetworkUtils 클래스가 있다고 가정해봅시다. 이 클래스를 object로 선언함.. 2024. 5. 28.
[Kotlin] Kotlin에서의 지연 초기화: lateinit 키워드 이해하기 lateinit는 Kotlin에서 나중에 초기화될 프로퍼티를 선언하기 위해 사용되는 키워드입니다. 코틀린은 널 안정성(null safety)을 중요시하는 언어이기 때문에, 프로퍼티를 선언할 때 반드시 초기화를 해주거나 null 가능 타입으로 선언해야 합니다. 그러나, 어떤 경우에는 클래스의 초기화 과정 중에 바로 프로퍼티 값을 결정하기 어렵거나, 의존성 주입 등으로 인해 객체 생성 이후에 초기화가 이루어져야 할 경우가 있습니다. 이런 경우에 lateinit 키워드를 사용하면 초기화를 지연시킬 수 있습니다. lateinit의 주요 특징:초기화 지연: lateinit 키워드를 사용하면 선언 시점에서 바로 초기화하지 않고, 나중에 초기화할 수 있습니다.널이 아닌 타입 사용 가능: lateinit으로 선언된 프.. 2024. 4. 30.
[Kotlin] Kotlin의 companion object 이해하기 Kotlin에서 companion object는 클래스 내부에 정의될 수 있는 객체 선언으로, 이를 통해 그 클래스의 static 멤버와 유사한 기능을 구현할 수 있습니다. Java와는 달리 Kotlin에는 static 키워드가 없으며, 대신 companion object를 사용하여 클래스 레벨의 변수나 메소드를 만들 수 있습니다. 이러한 특성은 Kotlin에서 클래스 인스턴스 없이도 클래스 이름을 통해 직접 접근할 수 있도록 해 줍니다. Companion Object의 특징:클래스 내부 객체: companion object는 클래스 내부에 위치하며, 해당 클래스의 모든 인스턴스가 공유하는 객체입니다.정적 멤버 접근: companion object 내부에 정의된 속성이나 함수는 클래스 이름을 통해 접근할.. 2024. 4. 30.
[Kotlin,Java] 코틀린과 자바에서 MutableList 선언 및 조작의 차이점 탐구 코틀린과 자바에서 MutableList를 선언하는 방법은 언어의 특성에 따라 다소 차이가 있다. 아래에서는 각 언어에 따른 MutableList 선언 방법을 코드를 통해 설명하겠다. 코틀린에서의 MutableList 선언 코틀린에서는 mutableListOf 함수를 사용하여 간결하게 MutableList를 선언할 수 있다. 코틀린의 표준 라이브러리는 다양한 컬렉션 타입을 쉽게 생성할 수 있는 함수들을 제공한다. val mutableList: MutableList = mutableListOf(1, 2, 3) mutableList.add(4) // MutableList에 아이템 추가 println(mutableList) // 출력 결과: [1, 2, 3, 4] 코틀린에서는 타입을 명시적으로 지정해주거나, 타.. 2024. 4. 23.
[Kotlin,Java] 자바와 코틀린에서의 프로퍼티 선언 방식의 차이점 설명 자바와 코틀린 모두에서 프로퍼티는 클래스의 상태를 나타내는 중요한 구성 요소이다. 그러나 코틀린은 프로퍼티를 선언하고 사용하는 방법에서 자바에 비해 더 단순하고 강력한 기능을 제공한다. 자바에서의 프로퍼티 생성 자바에서는 프로퍼티를 만들기 위해 필드(변수)와 그 필드를 접근하기 위한 getter 및 setter 메소드를 명시적으로 선언해야 한다. java public class Person { private String name; // 필드 // Getter public String getName() { return name; } // Setter public void setName(String name) { this.name = name; } } 코틀린에서의 프로퍼티 생성 코틀린에서는 필드, gette.. 2024. 4. 21.
[Kotlin, Java] Kotlin과 Java의 문법적 차이와 각 언어의 특징을 가위, 바위, 보 게임을 예시로 알아보기 Java 코드 package eu.tutorials.rockpaperscissors; import java.util.Scanner; import java.util.Random; public class Main { public static void main(String[] args) { String computerChoice = ""; String playerChoice = ""; System.out.println("Rock, Paper or Scissors? Enter your choice"); Scanner scanner = new Scanner(System.in); playerChoice = scanner.nextLine(); Random rand = new Random(); int randomNum.. 2024. 4. 2.