목록Kotlin (46)
밤빵's 개발일지
제네릭은 코드의 타입 안정성과 재사용성을 높이는 중요한 개념이다. 자바에서 제네릭을 사용해본 경험이 있지만, 코틀린에서의 제네릭은 몇 가지 차이점과 함께 보다 직관적인 문법을 제공한다. ▶제네릭(Generic) 개념 이해제네릭은 데이터의 타입을 일반화해 코드를 보다 유연하게 작성할 수 있는 방법으로 다양한 타입에 대해 하나의 코드 블록으로 처리할 수 있어 코드의 중복을 줄이고 유지보수성을 높인다. 제네릭은 주로 클래스나 함수에서 사용되며, 실행 시점이 아닌 컴파일 시점에 타입을 체크하여 타입 안정성을 확보할 수 있다.▶제네릭 클래스 작성제네릭 클래스를 선언할 때는 클래스 이름 뒤에 꺽쇠() 안에 타입 매개변수를 지정한다. class Box(val content: T) { fun getContent..
코틀린을 공부하며 반복문을 제어하는 새로운 방식인 라벨(Label)과 break/continue의 조합을 알게 되었다. 자바에서도 break와 continue를 사용해 반복문을 제어할 수 있지만, 코틀린에서는 라벨을 사용하여 특정 반복문을 쉽게 탈출하거나 건너뛸 수 있어 더욱 유연하게 반복문을 제어할 수 있다. ▶라벨(Label) 코틀린에서 라벨(Label)은 특정 코드 블록이나 반복문에 붙여서 그 지점을 식별하는 역할을 한다. 라벨은 @ 기호 뒤에 원하는 이름을 붙여서 생성하고, 특정 반복문이나 코드 블록을 명확히 구분하여 break나 continue 구문을 통해 제어할 수 있다. 라벨을 사용하면 중첩된 반복문에서 원하는 반복문만을 선택적으로 탈출하거나 다음 단계로 건너뛸 수 있어 코드의 가독성과 유..
네임드 아규먼트(Named Argument)와 기본 파라미터(Default Parameter) 설정 이 두 가지 기능은 자바에서는 경험하지 못한 개념이라 처음엔 조금 낯설었지만, 코드를 더 읽기 쉽게 만들고, 함수 호출의 유연성을 높여주는 장점이 있어 코틀린에서 자주 사용되는 기능이다. ▶네임드 아규먼트(Named Argument)네임드 아규먼트는 함수 호출 시 각 파라미터의 이름을 명시적으로 지정해 전달하는 방식이다. 일반적으로 함수의 인자를 전달할 때는 위치에 따라 값이 할당되지만, 네임드 아규먼트를 사용하면 파라미터의 이름을 함께 지정해 함수 호출을 더 명확하게 만들 수 있다. 이를 통해 가독성이 높아지고, 파라미터의 순서를 외우지 않아도 되는 장점이 있다. ▷예시: 네임드 아규먼트를 활용한 함수 ..
코틀린의 불변 컬렉션(Immutable Collection)과 가변 컬렉션(Mutable Collection)은 자바에서 이미 List, Set, Map과 같은 컬렉션을 사용해봤지만, 이들 컬렉션을 불변성과 가변성으로 구분하여 제공한다는 점이 다르다. 이 두 가지 컬렉션의 차이점을 이해하고, 각각의 사용법과 특징을 익히는 것은 코틀린에서 안전한 코드를 작성하는 데 중요한 역할을 한다. ▶불변 컬렉션(Immutable Collection) 과 가변 컬렉션(Mutable Collection)의 개념 코틀린에서는 컬렉션을 생성할 때 기본적으로 불변(Immutable) 컬렉션과 가변(Mutable) 컬렉션 중 하나로 선택할 수 있다. 불변 컬렉션은 한 번 생성되면 내부의 요소를 변경할 수 없고, 가변 컬렉션은..
코틀린을 공부하면서 자바와는 다른 기능 중 하나로 백틱(`)을 활용한 함수와 변수 이름 정의 방식을 알게 되었다. 자바를 공부할 때는 함수나 변수 이름을 지을 때 특정 문법 규칙을 엄격하게 따랐어야 했다. 하지만 코틀린에서는 백틱을 활용하여 일반적으로 허용되지 않는 예약어를 함수나 변수 이름으로 사용할 수 있고, 심지어 공백이 포함된 테스트 이름도 정의할 수 있다. 이러한 기능은 코드의 가독성을 높이고 테스트 코드 작성 시 의도를 더욱 명확히 전달할 수 있게 해준다. ▶백틱(`)을 활용한 함수와 변수 정의코틀린에서는 일반적으로 사용할 수 없는 이름이나 예약어를 백틱(`)으로 감싸면 함수나 변수 이름으로 사용할 수 있다. 예를 들어, when, class, in` 같은 코틀린의 예약어는 보통 이름으로 사..
코틀린을 공부하면서 처음 마주한 부분 중 하나가 바로 타입 시스템이였다. 자바를 조금 공부해본 입장에서, 코틀린의 타입 시스템은 익숙하면서도 독특한 개념들을 포함하고 있어 흥미로웠다. 특히 Any, Unit, Nothing이라는 타입들은 각각 객체, 함수 반환값, 프로그램 흐름을 다루는 데 중요한 역할을 한다. ▶ Any Any는 코틀린에서 가장 기본적인 타입으로, 모든 코틀린 타입의 상위 타입이다. 자바의 Object와 비슷한 역할을 하며, 어떤 타입의 객체든지 Any 타입으로 선언할 수 있다. 그러나 자바의 Object와 달리, 코틀린의 Any는 null을 허용하지 않으며, nullable을 허용하려면 Any? 타입을 사용해야 한다.val anyValue: Any = "Hello, Kotlin"va..
코틀린의 연산자 오버로딩(Operator Overloading)은 객체 간의 연산을 정의해 코드가 더 직관적이고 간결해지도록 도와주는 기능이다. 자바에서는 연산자를 직접 오버로딩할 수 없지만, 코틀린에서는 다양한 연산자(+, -, *, /, % 등)를 클래스에 맞게 재정의할 수 있다. ▶ 연산자 오버로딩 (Operator Overloading) 연산자 오버로딩은 특정 클래스에 연산자를 재정의하여 그 클래스에 맞는 연산 방식을 구현하는 방법이다. 예를 들어, 두 객체를 더하는 + 연산자를 재정의하면 객체1 + 객체2 형식으로 직관적인 코드를 작성할 수 있다. 이 기능은 특히 벡터, 복소수, 행렬 등의 수학적 개념을 다룰 때 유용하다. 자바에서는 연산자 오버로딩을 지원하지 않지만, 코틀린에서는 이러한 기능..
코틀린의 use 함수는 파일이나 네트워크 자원처럼 외부 자원을 다룰 때, 자원을 자동으로 해제할 수 있게 돕는 기능이다. 자바에서는 try-with-resources 구문을 통해 자원 해제를 관리하지만, 코틀린에서는 use 함수를 사용해 이를 더 간결하고 직관적으로 처리할 수 있다. 자원을 올바르게 해제하지 않으면 메모리 누수 등의 문제가 발생할 수 있으므로, use 함수를 통해 안전하게 자원을 해제하는 것이 유리하다. ▶ use 함수란?use 함수는 코틀린에서 제공하는 확장 함수로, Closeable 인터페이스를 구현한 객체에서만 사용할 수 있다. 이 함수는 자원을 사용하는 코드 블록을 안전하게 실행하고, 블록이 끝나면 자원을 자동으로 닫아준다. use 함수는 예외가 발생하더라도 자원을 자동으로 닫아주..
코틀린에서는 함수 안에 또 다른 함수를 선언할 수 있는데, 이를 통해 코드 구조를 개선하고 특정 기능을 캡슐화하여 가독성을 높이는 데 도움이 된다. 중첩된 함수는 특정 함수 내에서만 사용되는 보조 기능을 정의할 때 유용하고, 자바와 비교했을 때 더 간결하고 유연한 코드를 작성할 수 있다. 이번 개발일지에서는 코틀린에서 중첩된 함수를 사용하는 방법과 그 장점에 대해 정리해보았다. ▶중첩된 함수(Nested Functions)란?중첩된 함수(Nested Functions)는 함수 내부에 선언된 또 다른 함수를 의미한다. 중첩된 함수는 해당 함수 외부에서 접근할 수 없고, 주로 해당 함수 내에서 반복적으로 사용되는 로직이나 보조 기능을 분리할 때 유용하다. 중첩된 함수를 사용하면 코드의 가독성이 향상되고, ..
코틀린을 공부하면서 by 키워드와 위임 패턴(Delegation)이라는 새로운 개념을 알게 되었다. 위임 패턴은 객체지향 프로그래밍에서 자주 사용되는 디자인 패턴으로, 객체가 특정 기능을 다른 객체에게 위임(Delegation)하는 방식이다. 코틀린에서는 이 패턴을 지원하기 위해 by 키워드를 제공하며, 이를 사용하면 인터페이스 구현을 간결하고 효율적으로 처리할 수 있다. 이번 개발일지에서는 코틀린의 by 키워드를 활용한 위임 방법과 이로 인해 얻을 수 있는 장점을 정리해 보았다. ▶위임 패턴위임 패턴(Delegation Pattern)은 객체가 특정 작업을 수행하기 위해 그 작업을 다른 객체에게 위임하는 디자인 패턴이다. 이 패턴을 사용하면 코드의 재사용성과 유연성이 높아지고, 복잡한 상속 구조를 피할..