본문 바로가기

Kotlin/Kotlin In Action

(5)
함수 정의와 호출 (컬렉션, 함수, 확장 함수, 로컬 함수와 확장) Collection  1. 컬렉션이란?컬렉션은 자바에서 제공하는 자료구조를 코틀린에서도 편리하게 사용하기 위해 제공되는 라이브러리를 의미한다. 크게 List, Map, Set이 Collection이며 2가지 타입을 제공한다.가변으로 읽기, 쓰기가 모두 가능한 Mutable 타입불변으로 읽기만 가능한 Immutable 타입컬렉션도 타입을 추론해주기 때문에 빈 컬렉션을 생성하는 경우가 아닌경우 타입을 명시적으로 알려주지 않아도 괜찮다. 2. List데이터를 저장하거나 삭제할 때 순서를 지키는 컬렉션이며 인덱스를 이용해 직접 접근이 가능하다.중복된 값을 가질 수 있고 추가, 삭제, 교체가 쉽다.// 읽기만 가능하다.val list = listOf(1,2,3)// 읽고 쓰기가 가능하다.val mutableLis..
Enum / when 1. Enum(열거) 클래스란?Enum 클래스는 Comparable(비교 가능) 인터페이스를 구현하는 Abstract Class이다. 특정한 특징이나 속성으로 분류해 사용하는 값들을 나열할 수 있다. 때문에 고정된 값의 집합을 나타내는 가장 기본적인 방법이다. 주로 데이터 타입을 분류하는 Flag 역할과 상수를 저장하는 역할로 사용된다.1-1. Eun 클래스 멤버변수name호출하는 Enum Value의 이름을 반환한다.ordinal호출하는 Enum Value의 인덱스를 반환한다.함수 (상속받은 함수들만 가지고 있다.)Cloneableclone()ComparablecompareTo() 두 Enum Value의 인덱스 차를 반환한다.Anyequals, hashCode, toStringkotlin 1.1 부터..
클래스와 프로퍼티 1. 클래스// 자바 public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } } // 코틀린 class Person(val name: String)클래스의 목적은 데이터를 캡슐화하고 캡슐화한 데이터를 다루는 코드를 한 주체 아래 가두는 것이다. 자바에서는 데이터를 필드에 저장하고 멤버 필드 가시성은 비공개이다. 때문에 자바는 생성자 본문에 getter / setter 같은 추가적인 코드를 넣어 접근자 메소드를 제공해야한다. 하지만 코틀린의 클래스는 프로퍼티 개념을 사용하기 때문에 부가적인 코드 작성이 불필요해 더 ..
코틀린 기초 1. 기본 요소: 함수와 변수코틀린의 if는 문장이 아니고 결과를 만드는 식이다.fun max(a: Int, b: Int): Int { return if (a > b) a else b }자바에서 if문은 값을 만들어 내지 못하는 문장이지만 코틀린에서는 식이 된다.1-2. 문과 식의 구문🥨 식(Expression) vs 문(Statement) 식: 리턴 값을 만들어 내기 때문에 계산에 참여할 수 있다. 문: 일종의 블록으로 리턴 값을 만들 수 없다.코틀린은 식이 본문인 함수일 경우 중괄호와 return을 제거하며 등호(=)를 이용해 간결하게 함수를 표현할 수가 있다. 아래의 두 함수는 같은 코드이다.// 블록이 본문인 함수 fun max(a: Int, b: Int) : Int { if(a > b) { re..
코틀린이란? 📨 인자와 매개변수의 차이매개변수: 함수를 선언할 때 (a: Int, b: Int)인자: 함수를 호출할 때 sum(1,2)인자 함수는 선언 부분에 있는 매개변수 a와 b로 복사되어 전달된다.매개변수는 함수의 정의부분에 나열되어 있는 변수들을 의미하며, 전달인자는 함수를 호출할때 전달되는 실제 값을 의미한다.1. 정적 타입 지정 언어정적 타입이란 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 의미이다.타입과 관계 없이 모든 값을 변수에 넣을 수고 메소드나 필드 접근에 대한 검증이 실행 시점에 일어나기 때문에 코드가 짧아지고 데이터 구조를 더 유연하게 생성할 수가 있다.코틀린 컴파일러가 문맥으로부터 대부분 변..