모바일(126)
-
[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 -
[Kotlin] 람다 총정리
kotlin Lambda FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Something } }); /** * Interface definition for a callback to be invoked when a view is clicked. */ public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was clicked. */ void onClick(View ..
2021.06.15