본문 바로가기

코틀린22

코틀린(17) - 컬렉션 객체, 리스트 리스트 리스트는 데이터를 모아 관리하는 Collection 클래스를 상속받는 서브 클래스중 가장 단순한 형태로 여러개의 데이터를 순서로 넣어 관리하는 데이터구조이다. 리스트에는 두 가지가 존재한다. List 일반 리스트 MutableList 뮤터블 리스트 *Mutable 변할 수 있는, 잘 변하는 두 클래스의 차이는 이름이 붙은 mutable이 말해주듯 일반 리스트의 경우 생성시에 넣은 객체를 대체, 추가, 삭제 할 수 없으며, 뮤터블 리스트는 이것이 가능하다. 사용법 일반 리스트 : listOf(1,2,3) 뮤터블 리스트 : mutableListOf("A" ,"B", "C") 뮤터블리스트 추가함수들 요소의 추가 add(데이터) add(인덱스, 데이터) // 중간에 삽입되면, 그 위치에있는 데이터는 뒤로.. 2022. 3. 23.
코틀린(16) - 제너릭 제너릭 클래스나 함수에서 사용하는 자료형을 외부에서 지정할 수 있는 기능 예를들어 클래스A와 A를 상속받은 클래스B있다고 가정해보자. 이 두 클래스의 인스턴스를 공용으로 사용하는 하나의 함수에 패러미터로 받으려면 어떻게 해야할까? 함수의 패러미터 자료형을 슈퍼클래스인 A의 자료형으로 받으면 B는 자동으로 A로 업캐스팅되면서 두 클래스 모두 함수의 패러미터로 사용할 수 있다. 하지만! 캐스팅 연산 거치는 것은 프로그램의 속도를 저하시킬 수 있다는 단점이있다. 그래서 Gerneric 이라는 개념이 나왔다! 제너릭은 함수나 클래스를 선언할 때 고정적인 자료형 대신 실제 자료형으로 대체되는 타입 패러미터를 받아 사용하는 방법이다. fun genericFunc (param : T) : T class Generic.. 2022. 3. 23.
코틀린(15) - 다형성 다형성 다형성이란 쉽게 얘기해서 콜라를 '콜라 자체'로도 볼 수 있지만 '음료라는 특성'으로도 볼 수 있도록 만드는 것이 다형성의 개념이다. class Drink{…} class Cola : Drink() {…} var a: Drink = Cola( ) // 음료(Drink)를 담는 변수에 저장하면 '음료의 기능만 사용'하게되고, (즉 Cola의 인스턴스를 생성했지만, Cola의 메소드와 속성은 사용할 수 없고, Drink의 메소드와 속성만 사용할 수 있다. ★★★참고로 두 클래스 모두 drink( )라는 함수가 정의되어있고, Cola클래스에의 drink( )가 override가 된 상태라면 a.drink( )구문을 실행했을때 비록 "음료(drink)의 기능만 사용"한다 했지만, override된 Col.. 2022. 3. 23.
코틀린(14) - 람다함수를 이용한 스코프 함수 이번 강의에서는 람다함수를 이용한 특별한 기능인 스코프 함수를 알아보겠습니다. 스코프함수를 배우기전에 설명에 도움이 되도록 람다함수의 특별한 케이스들을 몇가지 소개해 드리겠습니다. 1. 람다함수도 여러 구문의 사용이 가능 val c: (String)-> Unit = {str -> println("$str 람다함수는") println("여러 구문") println("사용 가능합니다.") } val calculate: (Int, Int) -> Int = {a,b -> println(a) println(b) a+b } 참고로 람다함수가 여러줄이 되는 경우 마지막 구문의 결과값이 반환된다. 2. 람다함수에 파라미터가 없다면 실행할 구문들만 나열하면 된다. val a: ( ) -> Unit = { println(.. 2022. 3. 21.
코틀린(13) - 고차함수, 람다함수 고차함수(C언어에서 함수포인터와 비슷하다) 고차함수란 함수포인터라고 생각하면 된다. 함수를 '파라미터'로 넘겨줄 수 있고 '결과값으로 반환'시킬 수 도 있다. 코틀린에서는 '모든 함수'를 고차함수로 사용 가능하다. 람다함수 일단은 간단한 함수라고 생각하자. 깊이 들어가면 내용이 쫌 있다. 고차함수와 람다함수의 응용 fun main(){ b(::a) // 일반 함수를 고차 함수로 변경해 주는 연산자 val c = { str : String -> println("$str 람다함수")} // 람다함수(val c는 타입추론됨) b(c) } fun a (str: String){ println("$str 함수 a") } fun b(function:(String)->Unit){ // 함수를 자료형으로 나타내는법! f.. 2022. 3. 21.