Programming Language

Programming Language/Kotlin

[Kotlin] Scope Function 정리 (let, run, with, apply, also)

스코프 함수란? 코틀린에서는 Object Context 내에서 코트 블록을 실행하는 것이 목적인 여러 함수가 존재한다. 제공된 람다식을 사용하여 객체에 이러한 함수들을 호출하면 임시적으로 스코프(범위)가 설정된다. 이 범위에서는 해당 객체의 이름없이 접근할 수있다. 스코프 함수에는 5가지의 함수가 존재하는데, let, run, with, apply, also 공통점으로는 객체에 붙어있는 코드 블록을 실행시킨다는 것이다. 이에 차이점과 각 함수의 특징들에 대해서 정리해보자. 5가지의 함수의 정의이다. inline fun T.run(block: T.() -> R): R { return block() } inline fun with(receiver: T, block: T.() -> R): R { return ..

Programming Language/Kotlin

[Kotlin] Inline class란

인라인 클래스란? 경우에 따라 비즈니스 논리가 일부 형식 주위에 래퍼를 만드는 것이 필요하다. 그러나 추가 힙 할당으로 인해 런타임 오버헤드가 발생하고 또한 래핑된 유형이 기본 유형인 경우 기본 유형은 일반적으로 런타임에 의해 크게 최적화되는 반면 해당 래퍼는 특별한 처리를 받지 않기 때문에 성능 저하가 발생한다. 이러한 문제를 해결하기 위해서 Kotlin에서는 inline class를 제공한다. 인라인 클래스는 value-based classes의 하위 집합입니다. 이는 정체성은 존재하지 않으며 값만을 보유합니다. inline class는 생성자로 단 하나의 값만 받을 수 있다. 물론 클래스내에 프로퍼티와 함수를 정의할 수도 있다. inline class UserName(val value: String..

Programming Language/Kotlin

[Kotlin] Sealed Class 란

Sealed class란 Sealed class 및 interface는 상속에 대한 더 많은 제어를 제공하는 제한된 클래스 계층을 나타냅니다. 추상 클래스로 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다, 즉 컴파일러에서 Sealed class의 자식 클래스가 어떤 것이 있는지 알 수 있다는 것이다. sealed interface Error sealed class IOError(): Error class FileReadError(val file: File): IOError() class DatabaseError(val source: DataSource): IOError() object RuntimeError : Error 어떤 의미에서 Sealed class 는 Enum class와 유사하다..

Programming Language/Kotlin

[Kotlin] Enum class란

Enum class 열거형 클래스는 형식이 안전한 열거형을 구현하는 것입니다. enum class Direction { NORTH, SOUTH, WEST, EAST } 내부의 각각의 상수들은 오브젝트이다. 각 열거형 상수는 개체이다. 열거형 상수는 쉼표로 구분된다. 열거형 클래스는 다음과 같이 초기화할 수 있다. enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } Anonymous classes 열거형 상수는 해당 메서드와 재정의 기본 메서드를 사용하여 고유한 익명 클래스를 선언할 수 있습니다. enum class ProtocolState { WAITING { override fun signal() = TALK..

Programming Language/Kotlin

[Kotlin] Data Class란

Data class 란 데이터를 보유하는 것이 주된 목적인 클래스입니다. Ex) User의 data class data class User(val name: String, val age: Int) 데이터 클래스의 충족 조건 주요 생성장에는 적어도 하나의 파라매터가 필요하다. 모든 주요 생성자 파라매터는 val 혹은 var로 지정 데이터 클래스는 추상 클래스, open 클래스, sealed클래스, inner클래스 일수 없다. 1.1버전 이후 데이터 클래스는 다른 클래스를 확장할 수 있다. 클래스에 파라매터가 없는 생성자가 필요한 경우, 모든 프로퍼티의 기본값을 지정할 필요가 있다. data class User(val name: String = "", val age: Int = 0) 컴파일러에서는 기본생성자..

Programming Language/Java

[Java] 자바(Java)의 특징 정리

자바의 특징을 정리하자. 이식성이 높은 언어 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바 언어로 개발된 프로그램은 소스파일을 수정하지 않아도, 자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다. 따라서 자바 언어는 이식성이 높은 프로그래밍 언어이다. 객체지향 언어 객체 지향 프로그래밍(OOP : Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법이다. 이때 사용되는 언어를 객체 지향 언어라고 한다. 자바는 100% 객체 지향 언어이다. 객체를..

Programming Language/Kotlin

[Kotlin] 코틀린으로 앱 개발시 자바보다 이점

표현력과 간결함 코틀린의 최신 언어 기법을 이용하면 훨씬 간결한 구문으로 프로그램을 작성할 수 있습니다. 같은 로직을 자바와 코틀린으로 각각 작성해 보면 코틀린의 코드가 훨씬 간결하다는 것을 알 수 있습니다. 안전한 코드(safer code) 코틀린은 널안정성을 제공합니다. 객체지향 프로그래밍에선느 객체는 널 상태일 수 있으며, 이때 런타임 오류인 널 포인트 예외(NullPointException)가 발생할 수 있습니다. 따라서 객체가 널인 상황을 고려해 개발해야 하는데, 코틀린에서는 변수를널 허용(Nullable)과 널 불허용(not null)으로 구분해서 선언합니다. 이로써 널과 관련된 여러 부분을 컴파일러가 해결해줍니다. 상호운용성(interoperable) 코틀린은 자바와 100% 호환합니다. 따..

Tenacity_Dev
'Programming Language' 카테고리의 글 목록 (6 Page)