코틀린이란?
코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다. 서버 개발, 안드로이드 앱 개발 등의 기존 자바 코드가 사용되었던 분야에 코틀린을 사용할 수 있다.
1. 코틀린 맛보기
data class Person(var name:String, val age: Int? = null)
fun main(args: Array<String>) {
var persons = listOf(Person("영희"), Person("철수", age=29))
var oldest = persons.maxByOrNull(it.age ?: 0)
println("나이가 가장 많은 사람: $oldest")
}
결과: 나이가 가장 많은 사람: Person(name=철수, age=29)
- name과 age가 들어간 데이터 클래스를 정의
- age 프로퍼티의 디폴트 값은 따로 지정하지 않은 이상 null. 영희의 나이는 지정하지 않았으므로 null이 쓰임.
- maxByOrNull 함수에 전달한 람다 식은 파라미터를 받는데, it라는 이름을 사용하면 람다 식의 유일한 인자를 사용할 수 있음.
- 엘비스 연산자 ?:는 age가 null인 경우 0을 반환하고, 그렇지 않은 경우 age의 값을 반환.
-> 영희의 나이를 지정하지 않아 null이지만, 엘비스 연산자가 null을 0으로 변화해주어 철수가 가장 나이가 많은 사람으로 선정될 수 있었음.
2. 코틀린의 주요 특성
- 정적 타입 지정 언어: 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다. 하지만 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다. 코틀린 컴파일러가 문맥으로 변수 타입을 자동으로 유추할 수 있다고...! 이런 기능을 타입 추론이라고 한다.
- 함수형 프로그래밍과 객체지향 프로그래밍
함수형 프로그래밍의 핵심 개념
- first class 함수: 함수를 일반 값처럼 다룰 수 있다.
- 불변성: 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.
- 부수 효과 없음: 입력이 같으면 항상 같은 출력을 내놓고, 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용한다.
함수형 스타일로 프로그램을 작성하면?
1) 간결성: 강력한 추상화를 통해 코드 중복을 막을 수 있다.
2) 다중 스레드를 사용해도 안전하다.
3) 테스트하기 쉽다.
- 코틀린은 함수형 스타일로 프로그램을 짤 수 있게 지원하지만 함수형 프로그래밍 스타일을 강제하지는 않는다. 객체지향과 함수형 접근 방법을 함께 조합해서 사용하면 된다.
3. 코틀린의 철학
- 실용성
- 간결성
- 안전성
- 상호운용성
'Dev Book > Kotlin IN ACTION' 카테고리의 다른 글
CH4(4.1). 클래스 계층 정의 (0) | 2021.11.21 |
---|---|
CH3(3.4~3.6). 함수 정의와 호출(2) (0) | 2021.11.13 |
CH2(2.4~2.5). Iteration과 예외처리 (0) | 2021.11.06 |
CH3(3.1~3.3). 함수 정의와 호출(1) (0) | 2021.11.05 |
CH2(2.1~2.3). 코틀린 기초 (0) | 2021.11.03 |