android 썸네일형 리스트형 [코틀린] 코틀린 테스팅 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 테스팅(Testing)에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 코테스트 1. 명세 코테스트는 여러 명세 스타일을 지원한다. 지금은 코테스트를 프로젝트에 추가하면 바로 사용할 수 있는 명세 스타일을 살펴보자. 테스트 케이스를 정의하려면 명세 클래스 중 하나를 상속해야 한다. 이후 클래스 생성자에 테스트를 추가하거나 상위 클래스 생성자에 전달하는 람다 안에 테스트를 추가해야 한다. StringSpec 클래스 public abstract class StringSpec public constructor( body: io.kotest.core.spec.style.StringSpec.() -> kotlin.Unit ).. 더보기 [코틀린] 자바와 코틀린의 상호 운용성 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 자바와 코틀린 코드의 상호 운용성에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 코틀린은 JVM을 대상으로 만들어졌기 때문에 자바 코드를 코틀린에서 쉽게 사용할 수 있다. 주로 자바에 없는 코틀린 기능으로 문제가 발생하는데 이를 해결하는 방법들을 알아보자. 자바 코드를 코틀린에서 사용하기 1. 자바 메서드와 필드 자바 메서드를 아무 문제없이 코틀린 함수처럼 노출시킬 수 있다. 각 언어의 내용에 따라 뉘앙스 차이는 있을 수 있다. 자바 언어로 된 Java 클래스 public class Java { private String hello = "Hello"; public String getHello() { return hello;.. 더보기 [코틀린] DSL (도메인 특화 언어) 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 DSL(도메인 특화 언어)에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. DSL (도메인 특화 언어) 특정 기능이나 영역을 위해 만들어진 언어를 말하며 코틀린으로 도메인 특화 언어와 비슷한 특별한 API를 설계하는 것이다. 단순성이 주된 장점이다. 연산자 오버로딩 코틀린 내장 연산자(+, -, *, / 등등)에 대해 새로운 의미를 부여할 수 있는 언어 차원의 기능이다. 연산자를 구현할 때 관습에 따라 operator 키워드와 함께 확장 함수나 멤버 함수를 정의하면 된다. // times라는 이름의 관습을 통해 정의 operator fun String.times(n: Int) = repeat(n) // 2개의 식은 .. 더보기 [코틀린] Annotation 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 어노테이션(Annotation)에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. Annotation(어노테이션) 어노테이션은 코틀린 선언에 메타데이터를 엮어서 활용할 수 있게 해 준다. 커스텀 메타 데이터를 정의하고 코드에서 선언, 식, 파일 등의 요소에 엮는 방법을 제공한다. 3가지 어노테이션 코틀린과 안드로이드에 내장된 annotation (ex. Deprecated) Annotation에 대한 정보를 나타내기 위한 어노테이션인 meta annotation (ex. Target, Retention) 커스텀한 annotation 정의 선언의 앞쪽 변경자 위치에 @이 붙은 어노테이션 이름으로 정의한다. annotat.. 더보기 [코틀린] Data 클래스 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 Data 클래스에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. Data 클래스 주로 데이터를 저장하기 위한 목적으로 사용되며 equals 메서드(동등성 비교), toString 메서드 등의 구현을 자동으로 생성해준다. 구조 분해 선언 (destructuring declaration)을 활용할 수도 있다. 이는 클래스의 프로퍼티를 간단한 한 가지 언어 구성 요소를 사용해 여러 변수에 나눠 넣을 수 있다. 아래 User 클래스를 보면 user1, user2, user3 인스턴스들의 동등성 비교를 하고 있다. user1과 user2는 메모리에서 다른 위치(다른 객체)를 가리키고 있기에 동등하지 않다. user1과 use.. 더보기 [코틀린] Enum 클래스 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 Enum 클래스에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. Enum 클래스 미리 정의된 상수들로 이뤄진 제한된 집합을 표현하는 클래스 기본적인 구조는 아래와 같다. enum class 클래스명 { // 상수 // 멤버 변수, 멤버 함수 } enum 클래스를 코드로 알아보자. 아래는 요일을 나타내는 WeekDay enum 클래스이다. WeekDay의 확장 함수인 isWorkDay()는 일하는 요일을 판별하는 함수이다. enum 클래스는 정수, 문자열 등과 비교 시 어떤 값이 가능한 범위 안에 있는지 검사할 필요가 없고 정의한 상수들의 집합을 type-safe 하게 다룰 수 있다. /* 요일을 enum 클래스 안에.. 더보기 [코틀린] Lazy 초기화 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 Lazy 지연 초기화에 대해 알아보고자 합니다. lazy 초기화는 안드로이드 개발에 있어 중요한 개념이며 자주 사용하기도 합니다. User 클래스를 아래와 같이 정의해보자. 생성자 파라미터와 email 프로퍼티는 User 인스턴스 생성 시 메모리에 올라가게 된다. 이후 변수에 저장된 값을 빠르게 불러올 수 있게 된다. 아래 코드에서 User 인스턴스를 만들고 getFullName, getUserInfo 함수를 호출하면 순서대로 println()을 호출하게 된다. /* firstName, lastName -> 생성자 프로퍼티 email -> 프로퍼티 getFullName() -> User의 전체 이름 getUserInfo() -> User의.. 더보기 코틀린 정리 - (3) 안드로이드 개발하는 kancho입니다 이번 포스팅에서는 코틀린의 클래스와 객체에 대해 정리하려고 합니다. 코틀린의 객체지향 프로그래밍을 하기 위한 가장 기초적이면서 중요한 부분이라고 생각한다. '코틀린 완벽 가이드' 책을 참고하였습니다 Class 어떠한 것에 대해 정의하고 분류하는 설계도 /* User -> 클래스 이름 firstName, lastName, age, email -> 프로퍼티(Property) fullName() -> 함수 클래스의 접근 제한자는 기본적으로 public Java -> class가 package-private(패키지 내부) */ class User { var firstName: String = "" var lastName: String = "" var age: Int = 30.. 더보기 이전 1 2 3 4 5 다음