Android/안드로이드 스터디(Kotlin)61 Kotlin] 32. 함수 참조(Function Reference) Unit은 이미 만들어진 함수나 객체의 멤버함수를 참조할수도 있다. package functionReferenceEx fun plus(a : Int, b : Int) = println("plus calling ${a + b}") object Object { fun minus (a : Int, b : Int ) = println("Object minus calling ${a - b}") } class Class { fun average (a : Int, b : Int ) = println("class average calling ${(a+b)/2}") } fun main() { var instantFunc : (Int, Int) -> Unit instantFunc = :: plus instantFunc(3.. 2020. 12. 10. Kotlin] 31. 함수 리터럴 Unit은 함수가 들어갈 수 있는 타입이다. package functionLiterialEx fun main() { val instantFunc : (Int)->Unit instantFunc = {number: Int -> println("Hello $number") } instantFunc(33) instantFunc?.invoke(33) } 함수 리터럴에는 익명 클래스와 람다 표현식이 있는데, 위의 예시는 람다 형태이다. (매개변수) -> 작동할 행동 으로 이루어진다. 함수 리터럴은 return을 적지 않과, 마지막 표현식의 반환 값이 반환값이 된다. 함수 타입 변수 중 null로 넘어올 가능성이 있다면 저렇게 함수만 부르는 것 보다 invoke 표현식을 이용해 nullable하게 불러오는 것이 좋다.. 2020. 12. 10. Kotlin] 30. 데이터 클래스 클래스 중에서는 데이터만 다루는 클래스가 있다. 이 데이터 클래스 앞에 data를 붙이면 데이터를 수월하게 관리할 수 있는데, 장점도 있다. - Any 클래스 내부의 함수들이 자동으로 오버라이딩 된다. - toString을 사용하면 Employee(name=John, age=32, salary=180) .. 같이 객체 클래스명(프로퍼티 값 모음)으로 리턴된다. - copy 함수를 사용할 수 있다. 이를 이용하면 객체를 복사할 수 있다. package dataClassEx data class Employee(val name : String , val age : Int, val salary : Int) fun main() { val first = Employee("John", 32, 180) val seco.. 2020. 12. 10. Kotlin] 29. 중첩 클래스 기본적으로 자바의 경우 클래스 내부에 클래스를 선언하면 자동적으로 inner 클래스로 묶이는데, 코틀린은 그렇지 않다. 아무런 조치 없이 내부에 선언되는 경우, 두 인스턴스를 공유하지 않고 그저 따로 움직이는 클래스가 된다. 예시를 보자. package nestedClassExample class Outer { class Nested{ fun hello() = println ("중첩된 클래스") } } fun main() { val instance : Outer.Nested = Outer.Nested() instance.hello() } Outer 클래스 내부에 Nested 클래스가 선언된 상태이다. 호출할때는 외부클래스.내부클래스 순서로 호출하면 내부클래스를 호출 할 수 있다. 결과가 어떻게 나올까? .. 2020. 12. 10. 이전 1 ··· 5 6 7 8 9 10 11 ··· 16 다음 반응형