본문 바로가기

학습 log (이론)/kotlin11

'Coroutine' 기본 Corouties 매우 작고 가벼운 쓰레드 - 수천, 수백개가 동시에 동작해도 no overhead! no crash! 강력함 동기화와 병렬처리를 쉽게 구현가능함 쉬운 표현으로 학습이 쉬움 언제나 일시정지하고 정지시킬 수 있음 CoroutineContext는 coroutine이 실행 중인 여러 job과 dispatcher를 저장하는 일종의 맵 launch, async, runBlocking과 같은 코루틴 빌더가 존재 delay(), yield(), withContext, withTimeout, awaitAll, joinAll 등과 같은 일시중단(suspending) 함수가 존재 *일시중단 함수는 coroutine이나 일시중단 함수 아닌 곳에서 호출금지 Scope, Context, Suspending fu.. 2019. 12. 15.
Kotlin기초 'lambda' 람다 표현식, 익명함수 표현법 변수에 할당하거나 함수에 전달 가능 { 파라미터 -> 실행코드블록 } val 변수 = { x:Int, y:Int -> x+y } Kotlin에서 함수와 람다는 일급 객체로 취급되어 아래와 같이 사용 가능 val exp = {x:Int, y:Int -> {z: Int->(x+y)*z}} val exp2 = exp(2,3) val result = exp2(4) *First Class Citizen, 일급객체 변수와 자료 구조에 할당 가능 함수의 파라미터로 전달 가능 함수의 반환값으로 전달 가능 동등성 비교 가능 Collection의 함수형 API filter 컬렉션에서 조건에 맞는 항목만 추출해 새로운 컬렉션 반환 map 컬렉션 항목을 변환하여 새로운 컬렉션을 만들어 반환 fl.. 2019. 12. 7.
Kotlin기초 'Closure' Closure 상위 함수 영역의 변수에 접근할 수 있는 함수 close over, 특정 변수를 애워싸 가지고 있음을 의미 특정 로직에서 공식이 변경되는 경우, 공식의 이력을 함수로 관리하는 경우 class MainActivity : AppCompatActivity() { val TAG: String = "TEST" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var fn = funClosure(1) Log.e(TAG, fn(1).toString()) //2출력 Log.e(TAG, fn(1).toString()) //3출력 f.. 2019. 11. 12.
Kotlin기초 '유용한 함수' class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) /*let*/ f1().let { result -> height(result) } //height(it): 변수를 지정해주지 않으면 반드시 it 으로 반환하도록 지정되어 있음 100.let { it+1}.let { print(it) } //let 을 이용한 null 처리 var nullExc: () -> Any? = {null} nullExc()?.let { print(it) } /*apply()*/ va.. 2019. 11. 10.