Kotlin 7

[Kotlin] 반복문( for문, while문 )

이번에는 코틀린에서의 반복문을 알아본다. 코틀린에서의 반복문은 크게 for, while 문이 있다. 조건문과 마찬가지로 반복문도 자바의 반복문과 사용법이 거의 비슷하다. 1. for 문 아래 코드를 보면 1~5의 정수형을 갖는 numbers 라는 리스트를 생성하고, 그 numbers 라는 리스트에서 그 안의 값들을 차례대로 하나씩 출력하는 예제이다. 자바에서는 in 이 아닌, ':' 을 사용했었다. 아래 결과는 1 2 3 4 5 가 출력이 된다. 위 코드의 출력 결과가 같은 또 다른 코드도 살펴본다. 아래 코드는 동일하게 'in' 연산자를 사용해서 1부터 5까지의 정수형을 출력한다. 변수명은 number 대신 다른 것을 사용해도 된다. 일반적으로 'i' 를 많이 사용한다. 그렇다면 반대로 큰수에서 작은수..

Kotlin 2023.11.05

[Kotlin] 조건문 (if~else 문, when 문)

코틀린에서 조건문은 if~else 문과 when 문이 있다. 사용방법은 자바에서의 조건문과 거의 비슷하다고 생각하면 된다. 1. if~else 아래 코드는 파라미터로 넘어오는 score의 값에 따라서 80점 이상이면 'PASS', 80점 미만이면 'FAIL' 인지 리턴하는 간단한 예제이다. main 함수에서 getGrade 함수를 호출하면 어떻게 될까? 출력 결과는 FAIL이 나온다. 코틀린에서 if 문은 자바와 마찬가지로, if를 선언하고, ()안에 조건의 내용을 쓰고, {} 괄호안에 그 조건에 해당하면 실행할 구문을 쓰게 된다. 그리고 else, if else 등을 통해 다른 조건을 나열하면서 해당 조건에 해당하는 구문을 실행하게 된다. 여기까지는 자바의 if 문과 크게 다를 것이 없다. 하지만 자바..

Kotlin 2023.11.04

[Kotlin] 코틀린 Object, Companion Object

1. Object : object 키워드는 여러개가 아닌 단 하나의 인스턴스만 필요할 때 사용하는 키워드이다. 싱글톤 패턴과 비슷하다 일반 클래스는 인스턴스를 만들기 위한 틀이라고 할 수 있다. 그래서 그 클래스 내부에 있는 속성이나 함수를 사용하기 위해서는 생성자를 통해서 인스턴스 객체를 만들어야 한다. 하지만 여러개의 인스턴스가 필요하지 않고 단 하나의 인스턴스만 필요한 경우에는 굳이 class를 쓸 필요없이 object 키워드를 통해서 단 하나의 인스턴스만 생성되도록 할 수 있다. 자바의 싱글톤 패턴과 같다고 보면 된다. 객체 선언은 object 키워드로 시작한다. 생성자가 필요없다. 일반 클래스와 마찬가지로 object 클래스 안에도 프로퍼티, 메서드, 초기화 블록 등이 들어갈 수 있다. 변수와 ..

Kotlin 2023.08.25

[Kotlin] Sealed Class

1. Sealed Class 는 왜 등장했을까? 먼저 Sealed Class의 등장 배경을 알아본다 하나의 부모 클래스가 있고 여러개의 자식 클래스가 부모 클래스를 상속받았을 때, 컴파일러 입장에서는 이 부모 클래스를 상속받은 자식 클래스의 존재를 정확하게 알 수가 없다. 예를 들어 아래 코드를 보면, Animal이라는 추상 클래스를 만들고 Tiger, Lion, Dog 클래스를 만들어서 Animal 클래스를 상속받는다. 그리고 getAnimal 함수를 통해 animal을 매개변수로 받고 그에 해당하는 동물 이름을 호출하는 코드이다. when 문에 에러가 발생되는 것을 알 수 있다. 마우스를 올려서 어떤 에러인지 확인을 해보면 아래와 같은 메세지가 나온다. 즉, when 문에 else branch를 추가..

Kotlin 2023.08.22

[Kotlin] 코틀린 Enum Class, 이늄(이넘) 클래스

1. Enum Class 란? 코틀린에서는 자바와 마찬가지로 Enum Class 를 제공한다. enumerated type 즉, '열거형'의 준말로 Enum Class 안에 상태를 구분하기 위한 객체들을 이름을 붙여서 여러개 생성하고 그 중 하나의 상태를 선택하여 나타내기 위한 클래스이다. 2. Enum Class 특징 관행적으로 상수를 나타낼 때 사용하는 대문자로 작성한다. enum의 객체들은 고유한 속성을 가질 수 있다. 다른 클래스를 상속받을 수 없다. (인터페이스는 구현 가능) 각 객체가 싱글톤이다. 생성자를 만들어 속성을 받도록 하면 객체를 선언할 때 속성도 설정할 수 있다.(코틀린에서는 프로퍼티를 생성자와 함께 만들기 때문에 생성자에 필드 선언) 일반 클래스처럼 함수도 추가 가능하다.(객체의 ..

Kotlin 2023.08.21

[Kotlin] 코틀린 Data Class, 데이터 클래스

1. Data Class(데이터 클래스)란? 데이터 클래스는 일반 클래스와 달리, 다양한 메소드를 자동으로 생성해주는 클래스이다. (equals(), hashCode(), toString(), copy(), componentN 의 5가지 함수를 자동으로 생성) 주로 서버에서 받아온 데이터를 받을 때 사용한다. 기본 생성자는 1개 이상의 매개 변수를 가져야 함(매개 변수가 없는 생성자를 만들어야 할 때는 프로퍼티 기본값을 지정) 모든 기본 생성자 매개 변수는 val 또는 var로 선언해야 한다. abstract, open, sealed, inner 문법과 같이 사용할 수 없다. 2. Data Class 사용법 Data Class 는 클래스 앞에 data 키워드 하나만 붙이면 사용가능하다. 자세한 내용은 아..

Kotlin 2023.08.18

[Kotlin] 코틀린 Scope Function, 스코프 함수

scope 는 영역, 범위라는 뜻이고 function은 함수인데, 이 뜻을 합쳐보면 영역 함수, 범위 함수를 말한다. 코틀린에서 Scope Function은 람다를 사용해서, 영역을 만들고 코드를 더 간결하게 만들거나 method channing에 활용하는 함수이다. 스코프 함수를 쓰면 main 함수와 별도의 스코프에서 인스턴스의 변수와 함수를 조작하므로 코드가 깔끔해진다. 종류는 5가지가 있다. apply, also, let, run, with with은 스코프 함수가 아니라고 하지만, with도 스코프함수처럼 사용하기도 한다. 람다의 결과 반환 객체 그 자체를 반환 it 사용 let also with this 사용 run apply 1. apply 객체를 새로 생성하고 특정 변수에 할당하기 전에 초기..

Kotlin 2023.08.17