본문 바로가기

코틀린

[코틀린으로 배우는 함수형 프로그래밍] 2장 코틀린으로 함수형 프로그래밍 시작하기 안녕하세요 남갯입니다. 프로퍼티 선언 val value: Int = 10 var variable : Int = 10 var value = 10 // 타입추론 val value = 10 // 타입추론 val value :Int? = null //널처리 함수 선언 fun twice(value : Int) : Int{ return value*2 } fun twice2(value : Int) : Int = value *2 fun twice3(value : Int) = value *2 함수의 매개변수가 2개인것과 기본 디폴트값을 설정 가능하다. 매개변수가 여러개일경우 특정 값에 대한 '변수명 = 5'와 같이 가능하다. 익명함수 실제 구현부를 작성하지 않고 표현하는 방식 fun sum(x: Int, y: Int, ..
[코틀린으로 배우는 함수형 프로그래밍] 1장 함수형 프로그래밍이란? 안녕하세요 남갯입니다 오늘은 코틀린으로 배우는 함수형 프로그래밍에 대해 포스팅 해보려고합니다. 1.1 함수형 프로그래밍의 특징 함수형 프로그래밍은 데이터 처리의 참조 투명성을 보장하고 상태와 가변데이터 생성을 피하는 프로그래밍의 패러다임. 특징 1. 불변성 (순수함수) 2. 참조 투명성 3. 일급함수 4. 게으른 평가 장점 1. 부수효과가 없는 프로그램을 만들 수 있어 동시형 프로그래밍에 적함 2. 복잡도가 낮아, 간결한 코드 생성 및 모듈성이 높아 유지보수에 좋다. 3. 예측성을 높여서 컴파일러가 효율적으로 실행되는 코드를 만들어준다. 1.2 순수함수한 무엇인가? 간단하게 말하자면 말그대로 함수인것이다. y = f(x) 에서 항상 동일한 x값에 대해서는 동일한 y값의 결과를 내려준다. 즉 항상 동일한 ..
[코틀린] kapt 안녕하세요 남갯입니다. https://pluu.github.io/blog/kotlin/2017/07/23/kotlin-generatestubs/ kapt란? kapt Annotation Processing for kotlin 는 코틀린이 자바파일의 Annotation 처리시 Kotlin 파일의 Annotation 처리를 포함합니다.1. javac 보다 먼저 kotlinc가 동작합니다.2. kotlin 바이너리 파일은 javac 컴파일 대상이 됩니다.3.그러나 javac는 Annotation이 부여된 Kotlin 파일까지 자동으로 포함시키는 기구는 없습니다. 데이터 바인딩을 이용할때 BindingAdapter라는 annotation을 작성하게 되는데 kotlin의 annotation을 동작시키기 위해서는 ..
[Kotlin] 코틀린 확장 함수 (Kotlin extension functions) 예제 및 정리 안녕하세요 YTS 입니다. 오늘은 코틀린에 확장 함수 (Kotlin extension functions)! 에 대해 알아보려고합니다. 당연히! 이 글을 쓴다는거 자체가 확장함수를 지원한다는 얘기겠죠? 우선 전체적으로 공개하는 확장 함수부터 알아볼까요? 1.Kotlin 파일을 생성합니다! class 파일이 아닌 코틀린 파일로 생성해주세요! 저는 extenstion 이라는 패키지 밑에 파일을 생성했어요! 2. 확장 함수를 구현해주세요! package com.yts.healing.extension import android.content.Context import android.view.inputmethod.InputMethodManager import android.widget.Toast import and..
[코틀린] Higher order function 정리 안녕하세요 남갯입니다 오늘은 코틀린의 higher order function에 대해 포스팅해보려고합니다. - higher order function 이란? higher order function은 간단하게 두개를 만족하는 함수를 일컫습니다. 1. 함수에 파라미터로 전달하는 함수2. 함수를 반환(리턴)하는 함수 higher order function이 되기위해선 일급객체(first class citizen)가 되어야합니다. - 일급객체(firstclass citiezen) 이란? 일급객체란 아래의 조건을 만족하는것을 말합니다. 1. 변수나 데이터 할당 할 수 있어야한다. val test1: () -> Unit = { println("firstCitizen") } // firstCitizen 2. 객체의 인..
[Kotlin] 코틀린 스트림 함수 (map, flatMap, groupBy, filter, take, drop, first, distinct, zip, joinToString, count, any, none, max, min, average) 안녕하세요 YTS 입니다. 오늘은 코틀린의 스트림 함수에 대해 적어보려합니다. 스트림 함수 map() : 변환 map()은 컬랙션 내 인자를 변환하여 반환할 때 사용됩니다. class Map { val animals = listOf("사자", "호랑이", "코끼리") fun map() { animals.map { animal -> "동물의 이름은 ? = " + animal }.forEach { println(it) } } } mapIndexed() : 변환 mapIndexed()는 컬랙션에 포함된 인자의 인덱스 값을 변환하여 사용할 수 있습니다. class MapIndexed { val numbers = 0..10 fun mapIndexed() { numbers.mapIndexed { index, num..
[안드로이드] ROOM 라이브러리 사용하기 , 코루틴 안녕하세요 남갯입니다 오늘은 구글 JetPack componet에 포함된 ROOM에 대해 포스팅해보려고합니다. 스스로 정리해서 작성하는것이기때문에 틀린점이나 비판은 댓글에 달아주시면 달게받겠습니다. - JetPack component란? 구글 IO에서 62개정도의 작은 세션들을 공개했습니다 그 세션들의 집합을 Jetpack 이라하는데 , Android앱을 손쉽게 개발하도록 지원하는 android 소프트웨어 구성요소 컬렉션입니다이런 컴포넌트로 상용구코드를 작성하지않고, 복잡한 작업을 간소화 시킵니다. -출처https://developer.android.com/jetpack/, https://developers-kr.googleblog.com/2018/05/use-android-jetpack-to-accel..
[코틀린] mvvm패턴 속 application context 가져오기 안녕하세요 남갯입니다 오늘은 MVVM패턴속에 context를 인자로 넘겨주지 않기때문에 application 에서 context를 가져오는 방법에 대해 알려드리려고합니다 드로우어블 리소스나 스트링 리소스를 가져올때 자바의 경우 아래와 같이 작성하면 됩니다 public class Application extends android.app.Application { private static Application instance; public static Application getInstance(){ return instance; } @Override public void onCreate() { super.onCreate(); instance = this; } public Context applicaitonC..