본문 바로가기
반응형

Kotlin184

[Kotlin Release Notes] Kotlin Goes Open Source! 2012년 2월 14일 우리는 2010년부터 JetBrains에서 개발해온 Java와 JavaScript 플랫폼을 위한 현대적인 프로그래밍 언어인 Kotlin이 방금 오픈소스가 되었다고 발표하게 되어 기쁩니다! Kotlin 웹 데모 외에도, 웹 기반의 환경으로 Kotlin 프로그램을 편집하고 실행하고 공유할 수 있습니다. 우리는 스냅샷 빌드와 다음의 소스 코드에 대한 접근을 열었습니다 (Apache 2 라이선스 하에): Kompiler — Kotlin 컴파일러 기본 Java 라이브러리에 대한 개선 — JDK 컬렉션 등에 유용한 유틸리티 빌드 도구 — Ant와 Maven 통합 IntelliJ IDEA 플러그인 — Kotlin의 기본 IDE Kotlin을 시도해보고, 피드백과 아이디어, 제안을 주시면 감사하.. 2023. 8. 27.
[Kotlin Release Notes] Hello Word 2011년 7월 19일 오늘 JVM 언어 서밋에서 JetBrains는 거의 1년 동안 작업해 온 새로운 프로젝트를 공개하고 있습니다. 이 프로젝트는 Kotlin이라는 새로운 정적 타입의 프로그래밍 언어로, JVM을 위한 것입니다. Kotlin으로 우리는 다양한 언어에 대한 개발 도구를 만들어 온 수년간의 경험을 기반으로, 현재의 환경에 충분히 생산적이면서도 모든 프로그래머가 배울 수 있을 만큼 단순한 언어를 제공하려고 합니다. 현재 Kotlin은 활발한 개발 단계에 있으며, 개발 팀 외의 누군가에게 사용될 만큼 충분히 성숙하지 않습니다. 오늘 할 수 있는 것은 언어 문서를 읽고, 언어 디자인에 대한 피드백을 남기는 것입니다 — 어떤 기능이 마음에 드는지, 무엇이 빠져 있는지, 무엇이 혼동스러운지 등을 알.. 2023. 8. 27.
[Kotlin] data class가 애플리케이션 성능에 미치는 영향 이번 포스팅에선 data class가 애플리케이션 성능에 미치는 영향에 대해 알아보겠다. 이번 포스팅을 하게 된 이유? data class를 dto에 무의식적으로 붙여서 쓰고 있다가 문득 data class가 성능에 문제를 주진 않을까? 하는 생각에 정리하게 됐다. data class란? 이전 포스팅에 정리한 Kotlin 공식 문서 번역 - 클래스, 데이터 클래스를 보고오자. 그렇다 생성자에 있는 프로퍼티로 아래 5개 메소드를 자동으로 만들어주는 클래스다. equals(): 동등 비교 hashCode(): 해쉬 코드 생성 toString(): 프로퍼티 출력 copy(): 클래스 딥 카피 componentN(): 구조 분해 지원 data class가 어플리케이션 성능에 영향을 미칠까? 내가 만든 프로젝트에.. 2023. 8. 27.
[Kotlin] Kotlin 공식 문서 번역 - 역호환성 (Backward compatibility) 역호환성 (Backward compatibility) 이 장에는 역호환성에 대한 고려 사항이 포함되어 있습니다. 다음은 "하지 말아야 할" 권장 사항입니다: 기존 API 함수에 인자 추가하지 마세요. API에서 데이터 클래스를 사용하지 마세요. 반환 타입을 더 좁게 만들지 마세요. 다음을 고려하세요: @PublishedApi 주석 @RequiresOptIn 주석 명시적 API 모드 역호환성을 강제하는 도구에 대해 알아보세요. 역호환성이란? (Definition of backward compatibility) 좋은 API의 기본 요소 중 하나는 역호환성(Backward compatibility)입니다. 역호환성을 갖춘 코드는 새로운 API 버전의 클라이언트가 이전 API 버전과 동일한 API 코드를 사용할.. 2023. 8. 26.
[Kotlin] Kotlin 공식 문서 번역 - 데이터 클래스 (Data classes) 데이터 클래스 (Data classes) 코틀린의 데이터 클래스는 주로 데이터를 보유하는 데 사용되는 클래스입니다. 데이터 클래스는 자동으로 인스턴스를 가독성 있는 출력으로 표시하거나 인스턴스를 비교하고 복사하는 등의 추가 멤버 함수를 포함합니다. 데이터 클래스는 다음과 같이 'data'로 표시됩니다: data class User(val name: String, val age: Int) 컴파일러는 주요 생성자에 선언된 모든 프로퍼티에서 다음 멤버들을 자동으로 생성합니다: - .equals()/.hashCode() 쌍 - "User(name=John, age=42)"와 같은 형식의 .toString() - 프로퍼티가 선언된 순서대로 해당 프로퍼티에 대응하는 .componentN() - 함수.copy() 함.. 2023. 8. 26.
[Kotlin] Kotlin 공식 문서 번역 - 클래스 (Classes) 클래스 (Classes) 코틀린은 클래스와 객체를 사용하여 객체 지향 프로그래밍을 지원합니다. 객체는 프로그램 내에서 데이터를 저장하는 데 유용합니다. 클래스를 사용하면 객체의 특성 집합을 선언할 수 있습니다. 클래스에서 객체를 생성할 때 이러한 특성을 매번 선언할 필요가 없으므로 시간과 노력을 절약할 수 있습니다. 클래스를 선언하려면 class 키워드를 사용하십시오. class Customer 프로퍼티 (Properties) 클래스의 객체의 특성은 프로퍼티로 선언될 수 있습니다. 클래스에 대한 프로퍼티를 선언하는 방법은 다음과 같습니다: - 클래스 이름 뒤의 괄호 () 내부에서 선언합니다. class Contact(val id: Int, var email: String) - 중괄호 {}로 정의된 클래스.. 2023. 8. 26.
[Kotlin] inline 사용법 (4) - crossinline 사용법 이번 포스팅에선 crossinline 소개와 사용하는 이유에 대해 알아보겠다. 비지역 반환(Non-Local Return)이란? crossinline을 알아보기 전에 비지역 반환부터 알아보고 가자. 고차 함수에서 람다 표현식이나 익명 함수와 함께 사용될 때 발생하는 현상이다. 비지역 반환은 특정 블록이나 람다 표현식의 스코프를 벗어나 바깥쪽 함수나 스코프로 반환하는 것을 말한다. Kotlin에서 일반 람다 내부에서 return 키워드를 사용하면, 람다가 아닌 람다를 포함하고 있는 함수까지 종료하게 된다. fun foo() { listOf(1, 2, 3).forEach { if (it == 2) return // foo 함수를 종료하는 비지역 반환 println(it) } println("이 문장은 실행되.. 2023. 8. 16.
[Kotlin] inline 사용법 (3) - noinline 사용법 이번 포스팅에선 noinline 소개와 사용해야 하는 경우에 대해 알아보겠다. noinline이란? noinline은 inline function의 람다 파라미터를 inline하고 싶지 않을 때 사용한다. 위 정의를 듣자마자 엥? inline을 그냥 때면 되는 거 아닌가? 왜 굳이 noinline를 붙이는 거지? 라는 생각이 들었다. 사용해야 하는 경우를 알아보자. noinline을 사용해야 하는 경우 1. inline function의 람다를 다른 function에서 사용해야 하는 경우 inline fun twoOperations( noinline op1: (List) -> Unit, op2: (List) -> Unit ) { val numbers = listOf(1, 2, 3) // noinline .. 2023. 8. 15.
[Kotlin] inline 사용법 (2) - reified 사용법 이번 포스팅에선 reified 소개와 활용법에 대해 알아보겠다. 제네릭 함수 타입 소거란? reified를 소개하기 전에 제네릭 함수 타입 소거에 대해 먼저 알아보고 가자. 제네릭 함수는 컴파일되면 타입이 소거된다. 아래 swap 함수가 컴파일되면? fun swap(a: T, b: T): Pair { return b to a } 타입 정보가 제거되고 Object로 바뀐다. 이걸 타입 소거라고 한다. 타입 소거의 문제점 제네릭 함수는 컴파일되면 제네릭 타입이 소거되기 때문에 런타임에서 타입 정보를 알 수가 없다. 무슨 말이냐면, 아래와 같이 타입 파라미터 T의 클래스를 찍고 싶어도 찍을 수가 없다는 말이다. Cannot use 'T' as reified type parameter. Use a class i.. 2023. 8. 15.
반응형