코틀린에서 비동기 처리로 여러개의 루틴을 동시에 처리할 수 있는 방법 메인의 동기처리와 별도로 움직이며 개발자가 제어 가능한 루틴 처리 import kotlinx.coroutines.* import 필수 코르틴은 제어범위 및 실행범위를 지정할 수 있다 -> 코루틴의 Scope Global Scope 프로그램 어디서나 제어, 동작이 가능한 기본범위 CoroutineScope 특정한 목적의 Dispatcher를 지정하여 제어 및 동작이 가능한 범위 모든 플랫폼에서 지원되는 것은 아님, 지원되는 플랫폼에 따라서 사용 Dispatchers.Default(기본적인 백그라운드 동작) Dispatchers.IO(I/O에 최적화 된 동작) Dispatchers.Main메인(UI) 스레드에서 동작 Scope에서 제어되도..
제너릭 클래스나 함수에서 사용하는 자료형을 외부에서 지정할 수 있는 기능을 말함 ex) Class A -> Class B(상속 받음) 이 두 클래스의 인스턴스를 공용으로 사용하는 하나의 함수에 패러미터로 받으러면? Class A(Super Class) A의 자료형으로 받으면 B를 넣어도 A로 캐스팅 됨, 따라서 두 클래스 모두 함수의 패러미터로 사용 가능함 fun castingExam(var a: A) But, 캐스팅 연산은 프로그램의 속도를 저하시킬 수 있다는 단점이 있다 -> 제너릭 등장 제너릭은 함수나 클래스를 선언 할 때 고정적인 자료형 대신 실제 자료형으로 대체되는 타입 패러미터를 받아 사용하는 방법입니다. 일반적으로 'Type'의 이니셜인 T를 사용 T -> U -> V 순으로 사용 fun m..
Observer(옵저버) 패턴 이벤트가 발생하는 것을 '감시' 하는 감시자의 역할을 만든다고 해서 옵저버라고 부름 안드로이드의 예라면 키의 입력 터치의 발생 데이터 수신 함수로 직접 요청하지 않았지만 시스템 또는 루틴에 의해서 발생하게 되는 동작들을 이벤트라고 한다. 이러한 이벤트가 발생할 때마다 '즉각적으로 처리' 할 수 있도록 만드는 프로그래밍 패턴을 '옵저버 패턴' 이라고 함 Observer(옵저버) 패턴을 구현하기 위해서는 두개의 클래스가 필요함 이벤트를 수신 이벤트의 발생 및 전달 두 클래스간의 통신하는 방법 : 인터페이스 'observer' 이용 코틀린에서는 listener 라고 함 -> 이렇게 이벤트를 넘겨주는 행위를 CallBack 이라고함 //class EventPrinter : 이벤트를..
고차함수 고차함수란 함수를 클래스에서 만들어낸 '인스턴스'처럼 취급 하는 방법 함수를 파라미터로 넘겨줄 수도 있고, '결과값'으로 반환 받을 수도 있는 방법 입니다. 코틀린에서는 모든 함수를 고차함수로 사용 가능 fun main() { //::일반함수를 고차함수로 변경해주는 연산자 b(::a) } fun a(str: String) { println("$str 함수 a") } //return 없는 경우 Unit fun b(function: (String) -> Unit) { function("b가 호출함") } 람다 함수 일반 함수와 달리 그 자체가 고차함수 별도의 연산자 없이도 변수에 담을 수 있다. fun main() { //람다 함수 //람다 함수는 그 자체가 고차함수이기 때문에 연산자 불 필요 va..
오버라이딩 상속에서는 기본적으로 수퍼클래스와 같은 속성을 가진 서브클래스를 만들수 없다 fun a(v: Int) -> (x) fun a(v: Int) 하지만 슈퍼 클래스에서 '오버라이딩'이라는 형태로 허용한다면 같은 이름과 형태로 된 함수의 내용을 다시 구현할 수 있다. fun main() { var t = Tiger() t.eat() } open class Animal { //eat 함수를 오버라이드 하기 위해 open open fun eat() { println("음식을 먹습니다.") } } class Tiger : Animal() { //open 이 붙은 함수를 override override fun eat() { println("고기를 먹습니다.") } } 추상화 선언부만 있고 기능이 구현되지 않..