본문 바로가기

Kotlin

(9)
Kotlin - 컬렉션 함수 (Collection Functions) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. 컬렉션 함수 컬렉션의 요소들을 순회할 때 for 문을 쓰면 편리하지만, 함수형 프로그래밍을 지향하는 코틀린은 컬렉션을 다룰 때 필요한 여러 가지 유용한 함수들을 지원한다. 컬렉션 함수는 list나 set, map, 또는 배열 (array) 에 일반 함수 또는 람다 함수 형태를 사용하여 for 문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러 함수를 지칭한다. forEach 아래 예시와 같이 사용하며, it이라는 키워드로 각각의 요소에 대응하여 안에 들어있는 함수를 실행한다. 예시 fun main() { var a: List = listOf(1, 2, 3)..
Kotlin - 더 많은 함수 기능들 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. Overloading 코틀린에서는 overloading을 지원한다. 이는 같은 스코프 내에서 서로 다른 파라미터 셋을 가지는 이름이 같은 함수들을 사용할 수 있다는 것인데. 아래 예시를 보자. 예시 fun main() { println(add(1, 2)) println(add("a", "b")) } fun add (a: Int, b: Int): Int { println("int added...") return a + b } fun add (a: String, b: String): String { println("string added...") return a + b } 출력 int ad..
Kotlin - Null 처리와 동일성 확인 (Null Safety and Equality) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. Null 처리 Nullable 변수에 null 값이 대입되어 있을 때, 만약 해당 변수의 클래스 메서드 또는 속성을 불러오려고 하면 Null Pointer Exception 예외가 발생한다. 따라서 nullable 변수를 사용할 때에는 null인지 아닌지 먼저 확인을 해주어야 한다. 예를 들어 아래와 같이 코드를 작성할 수 있을 것이다. 예시 fun main() { var a: String? = null; if (a!=null) { println(a.uppercase()) } } 위 예시는 아무것도 출력하지 않는다. a가 null이기 때문이다. 하지만 이러한 null 체크를 하기 위해 ..
Kotlin - 제너릭 (Generic) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. 제너릭이란 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 아래 예시는 Farm이라는 클래스에서 Animal이라는 수퍼클래스를 가진 하위클래스들을 가지는 List를 내부에 가지도록 했다. 예를 들어, cowFarm에는 Cow 클래스 인스턴스들을 가진 리스트인 cows를 넣었다. 예시 fun main() { var cows:List = listOf(Cow(), Cow(), Cow()) var dogs:List = listOf(Dog(), Dog(), Dog()) var cowFarm = Farm(cows) var dogFarm = Farm(dogs) cowFarm..
Kotlin - 클래스의 다형성 (Polymorphism) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. Up-Casting과 Down-Casting 가령 상위클래스인 Drink 클래스가 있고, 하위클래스인 Cola 클래스가 있다고 하자. 이후, Cola의 인스턴스를 만들고 싶은데, 이 안에 Drink의 요소들만 담고 싶다면, 다음과 같이 선언하여 인스턴스를 생성할 수 있다. 이 경우에, Cola를 통하여 인스턴스를 생성했음에도, 해당 변수의 실질적인 인스턴스는 Drink의 인스턴스가 되게 된다. fun main() { var cocaCola: Drink = Cola() cocaCola.sip() //cocaCola.shake() } open class Drink { fun sip() { ..
Kotlin - 고차함수와 스코프함수 (Higher Order Function and Scope Function) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. 고차함수 어떤 함수의 파라미터로 함수를 받아올 때, 해당 함수를 하나의 인스턴스처럼 넘겨줄 수 있는데, 이러하게 넘겨지는 함수를 고차함수라고 한다. 코틀린에서는 어떤 함수든 고차함수가 될 수 있다. 함수를 파라미터로 받아올 때에도 함수의 자료형을 지정해주어야 하는데, 함수의 자료형은 다음과 같이 표시한다. 예를 들어, String형의 파라미터가 들어가서 String형의 파라미터가 나오는 함수를 파라미터로써 집어넣고 싶다면, 다음과 같이 표현하면 된다. 참고로 반환하는 값이 없을 경우에는 Unit이라고 적어주면 된다. 또한, 일반함수를 고차함수로 넘기려면 :: 연산자를 사용하면 되는데, ..
Kotlin - 클래스 (Class) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. 생성자 코틀린은 클래스를 생성자와 함께 선언할 수 있다. 이 경우 마치 함수와 같이 들어갈 변수들을 지정하는 방식으로 진행된다. 이 같은 방법을 통해 생성자와 속성을 동시에 선언하는 방법이다. 예시 fun main() { val beom = Person(24, "Beom Seok") beom.sayName(); } class Person (val age: Int, val name: String) { fun sayName () { println("My name is ${name}") } } 출력 My name is Beom Seok 그러나 위와 같은 경우 생성자의 기능이 제한적이다. 단순..
Kotlin - 함수, 조건문, 반복문 (Function, Conditional, Iteration) 내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다. 단일 표현식 함수 단일 표현식 함수 (Single-Expression Function) 는 간단한 함수들의 반환값을 마치 변수에 결과값을 할당하듯 식을 할당하여 만든다. 또한 이 경우 반환형의 타입추론이 가능하므로, 반환형 또한 생략이 가능하다. 자바스크립트의 화살표 함수와 비슷하게 사용할 수 있다. 예시 fun main() { println(add(1,2)) } fun add(a: Int, b: Int) = a + b; 출력 3 is 연산자 코틀린에는 자료형을 확인할 수 있는 is 연산자가 있다. 따라서 같은 is이지만 파이썬의 is와는 쓰임이 다르다. 가령 아래와 같이 사용할 수 있..