13강. 고차 함수와 함수 리터럴고차함수파라미터로 함수를 받거나 함수를 반환하는 함수두 수를 연산하는 함수파라미터에 함수를 받고있음, 즉 고차함수임fun compute(num1: Int, num2: Int, op: (Int, Int) -> Int): Int { return op(num1, num2)}compute를 호출하는 방법람다식, 익명함수를 함숫값 또는 함수 리터럴이라고 함리터럴: 소스 코드의 고정된 값을 나타내는 방법fun main() { // 람다식 compute(5, 3) { a, b -> a + b } // 익명함수 compute(5, 3, fun(a: Int, b: Int) = a + b) // 익명함수 + 타입추론 compute(5, 3, fun(a, b..
8강. lateinit, lazy()class Person( private val name: String) { val isKim: Boolean get() = this.name.startsWith("최") // 홍길동 -> 홍** val maskingName: String get() = name[0] + (1 until name.length).joinToString("") { "*" }}fun main() { val person = Person("홍길동")}클래스 인스턴스화가 이뤄지며 name에 '홍길동'이 들어감만약, 인스턴스화 시점과 프로퍼티 초기화 시점을 분리하고 싶다면?테스트 코드 작성테스트 코드의 특징은 각 테스트 메소드가 Person을 각각 ..
1강 제네릭과 타입 파라미터Cage 클래스동물을 넣거나 꺼낼 수 있음methodsgetFirst() - 첫번째 동물을 가져옴put(animal) - 동물을 넣는다.moveFrom(cage) - 다른 cage에 있는 동물을 모두 가져온다.Codeclass Cage { private val animals: MutableList = mutableListOf() fun getFirst(): Animal { return this.animals.first() } fun put(animal: Animal) { this.animals.add(animal) } fun moveFrom(cage: Cage) { this.animals.addAll(cage..
개발 환경 Intelli J java 8 kotlin 1.2.71 mysql spring boot 2.1 spring data jpa gradle 설정 Intelli J 최신버전으로 유지해줘야 원활한 개발이 가능합니다. (사용 버전: 2019.1.3) Intelli J 코틀린 플러그인 설치 https://plugins.jetbrains.com/plugin/6954-kotlin/ Kotlin - Plugins | JetBrains The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. plugins.jetbrains.com 코틀린 프로젝트 생성 Intelli J → File → New Project → Spring I..
람다 표현 람다식은 항상 중괄호로 감싼다. 파라미터 -> 몸체 형식으로 선언한다. 인자는 형식 추론이 가능하면 생략 가능하다. 바로 실행시 run을 사용한다. fun main () { val f: () -> String = { "hello lambda" } println(f()) // hello lambda run { println("hello lambda") } // hello lambda } 람다 사용 규칙 함수의 맨마지막이 람다면 ()안에서 빼내어 사용 가능하다. 인자가 하나라면 람다식 내부에서 it키워드로 대체해서 사용가능하다. 인자가 하나이면서 인자 타입이 람다라면 ()를 생략 가능하다. fun calculator(a: Int, b: Int, f: (a: Int, b:Int) -> Int) = ..
함수 선언 fun키워드를 이용해 선언한다. fun printAll(list: List) { for (e in list) { println(e) } } 기본 인자 함수의 파라미터는 기본 인자를 가질수 있으며 생략시 기본인자를 가진다. (오버로딩을 줄일수 있음) fun join(list: List, join: String = "_"): String { return list.joinToString(join) } fun main() { println(join(listOf("park", "jin"))) // park_jin println(join(listOf("park", "jin"), "~")) // park~jin } 기본 인자를 갖는 메서드를 오버라이드 할때는 기본인자를 생략해 주어야만 한다. open cl..