모바일/Android_Kotlin(18)
-
[kotlin] 코틀린을 다루는 기술 — 4장 재귀, 공재귀, 메모화
코틀린을 다루는 기술 — 4장 재귀, 공재귀, 메모화 concat concat을 사용하면 기존의 리스트에 새로운 리스트를 추가하여 새 리스트를 반환한다 끝에 NIL포인터를 새 리스트로 연결시킨다 나머지 설명 LIst 클래스에는 2개의 비공개 하위 클래스가 있다. 한 가지는 빈 리스트를 표현하는 Nil이고, 다른 하나는 비어있지 않은 리스트를 표현하는 Cons이다. 자세한 설명은 주석에 달아놓았다. fun main() { // println(add(2)) // val squareOfTriple = compose(::square,::tripe) // var lit :List = arrayListOf('d','d') // print(toString(lit,"string")) val..
2021.06.21 -
[Kotlin] apply, with, let, also, run, 범위 지정, 수신 객체 지정 람다, 확장함수
[Kotlin] apply, with, let, also, run, 범위 지정, 수신 객체 지정 람다, 확장함수 확장함수란? Extension functions(확장 함수)는 기존에 정의된 클래스에 함수를 추가하는 기능입니다. 자신이 만든 클래스는 새로운 함수가 필요할 때 쉽게 추가할 수 있는데요. Standard Library 또는 다른 사람이 만든 라이브러리를 사용할 때 함수를 추가하기가 매우 어렵습니다. 확장함수 정의법 fun List.getHigherThan(num: Int): List { val result = arrayListOf() for (item in this) { if (item > num) { result.add(item) } } return result } 출처 : https://c..
2021.06.21 -
[kotlin] High-Order-Function
High-Order-Function 함수를 파라미터로 념겨주거나, 함수를 반환하는 함수를 말한다 코틀린은 넘어오는 변수가 1개인 경우 it로 대체 가능하다 파라미터 1개일때, fun main() { print { it+4 } } fun print(calculate : (Int)->Int){ println(calculate(1)) } //출력 5 파라미터가 2개일 때 fun main() { print { a, b -> a + b } } fun print(calculate: (Int, Int) -> Int) { println(calculate(1, 3)) } //출력 4 다른 메소드 참조하기 fun main() { printFunction (::sample) } fun printFunction(calcula..
2021.06.18 -
[kotlin] inline , noinline, crossline function
inline , noinline, crossline function inline 함수의 인자로 고차함수를 사용한 함수를 전달할 때 inline 을 사용하고, 익명 클래스의 생성 비용을 줄인다 람다를 사용하면 각 함수는 객체로 변환되어 메모리 할당, 가상 호출 단계를 거치는데 이 비용을 줄일 수 있다. Calculator 함수로 예를 들어보겠습니당 fun main() { val f2: Function2 = { a, b -> a + b } println(calculator(4, 5, f2)) } fun calculator(a: Int, b: Int, op: Function2): Int { return op.invoke(a, b) } //출력 9 이 calculator함수를 쭈욱 호출하게 되면 람다식 마다 각..
2021.06.18 -
[kotlin] class, object, companion object
class, object, companion object class 자바의 클래스와같다 object 싱글턴을 간단하게 구현할 수 있게 해준다 object 키워드는 클래스를 정의하면서 객체를 생성합니다. fun main() { val singletonClass = Singleton println(singletonClass.st) println(singletonClass.function()) } object Singleton{ val st = "하하" fun function() = "싱글턴메소드" } //하하 //싱글턴메소드 companion object static 처럼 동작하게 만들어준다 static 과의 차이점은 companion object는 객체이고 변수에 할당할 수 있다(자바는 불가능) compa..
2021.06.17 -
[kotlin] 함수 리터럴 (with receiver)
리시버가 있는 함수 리터럴 fun main() { println(100.lambdaSum(1)) println(100.functionSum(1)) } //lambda(function literal) with receiver val lambdaSum : Int.(Int) -> Int = { other -> plus(other) } //function(function literal) type with receiver val functionSum = fun Int.(it:Int) : Int = this + it //101 //101 위 코드는 리시버를 가지는 함수 타입입니다. 첫번째 함수는 lambdaSum의 타입은 Int.(Int) -> Int 로 사용할 수 있는 함수타입이며, other 를 인자로 받아서 ..
2021.06.17