고차함수에 대해 알아보기 전에 먼저 람다에 대해 짚고 넘어가자. 쓸 줄은 알지만 막상 람다 표현식이 뭐야 ? 왜 사용해 ? 라고 물어보면 쉽게 답할 수 없는 것이 람다였는데 람다 -> 고차함수 -> 인라인함수 로 지식을 확장해나갈 수 있으므로 잘 알아두자 😽 lamda💡 람다 표현식 또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 의미하며, 이름없이 표현식으로 깔끔하게 함수를 전달할 수 있는 표현 방법이다 { 파라미터 -> 본문 } 형태를 가진다 함수형 프로그래밍을 구현하는 대표적인 방법이며, 이를 통해 코드가 간결해지고 가독성 또한 뛰어나진다두 수를 더하는 람다 표현식의 예 -> val sum: (Int, Int) -> Int = { a, b -> a + b } i..
Scope FunctionWhen you call such a function on an object with a lambda expression provided, it forms a temporary scope.In this scope, you can access the object without its name. 코틀린에서는 객체 내부에서 코드를 실행할 수 있는 여러 함수가 제공된다. 그들 중 일부는 람다 표현식이 제공되고, 그에 따라 임시 스코프가 형성된다. 이 스코프에서는 객체의 이름을 사용하지 않고 it, this를 활용해 객체에 접근이 가능한데, 이러한 함수를 scope function 이라고 한다. 개인적으로 사용은 할 줄 알지만, 언제 어떻게 사용하는지에 대한 적절한 판단까지 가능한가..
override suspend fun getFeedDetail(feedId: Int): Result = runCatching { feedDataSource.getFeedDetail(feedId).data?.toDetailFeed() } repository구현체에서 다음과 같이 Result 타입을 runCatching으로 받아왔다. 이렇게 runCatching을 성공,실패의 처리에 자주 사용하는데 어떤 장점을 가지고 어떻게 사용되는지, getOrNull말고도 확장함수는 또 뭐가 있었는지 한번 정리해놓고 넘어가자 😽 Result Result는 동작이 성공하든 실패하든 동작의 결과를 캡슐화하여 나중에 처리할 수 있도록 한다runCatching 함수의 반환형이며..
개인적으로 나에겐 미루고..미루고 미루던 주제이다. 이젠더이상물러날수가없~기 때문에 알아보도록하자. Generic클래스 내부에서 사용할 자료형을 인스턴스를 생성할 때 확정하는 것을 제네릭 이라고 한다. 즉, 어떤 타입이든 수용할 수 있는 형태가 generic이다. Generic 함수함수의 이름 앞에 명시한다fun printItem(item: T) { println(item)}fun main() { printItem(123) // Int 타입 printItem("Hello") // String 타입 printItem(45.67) // Double 타입} Generic 클래스클래스의 이름 뒤에 명시한다class Box(val item: T) ..
데이터 클래스는 자바에는 없는 코틀린의 축복이고, 실제로 개발할때도 enum class, sealed class와 함께 자주 쓰이는 클래스 중 하나이다. 오늘은 데이터 클래스가 무엇인지 동반되는 함수와 함께 알아보고, 거기에 얕은복사와 깊은 복사에 대해서도 공부해보자. Data ClassFor each data class, the compiler automatically generates additional member functions that allow you to print an instance to readable output, compare instances, copy instances, and more 데이터 클래스는 일반 클래스와 달리 , 다양한 메소드를 자동으로 생성해주는 클래스이다. 자..
앞선 포스팅에서는 코틀린에서 사용할 수 있는 컬렉션의 종류와 그 쓰임을 알아보았다면, 이를 제대로 활용하기 위해서 제공하는 다양한 함수들에 대해 알아보도록 한다. 코틀린 공식 문서에 따라 정리되었고, 그에 따르면 Collection은 다음과 같은 기능을 제공하고, 그에 따라 구현 및 가공될 수 있다 ! Iteratoriterator 는 Set 과 List 를 포함해 Iterable interface 의 상속자들로부터 가져올 수 있고, iterator() 함수 호출로 구현이 가능하다. iterator 는 첫번째 element 를 가리키고 이동가능하며, 마지막에 도달하면 다시 사용할 수 없으므로 새로 iterator 를 얻어야 한다. iteratorListIteratorMutableIt..
컬렉션은 수집이라는 단어 의미 그대로 다수의 객체를 수집해놓은 객체를 의미한다. 자바에도 컬렉션이 존재하지만, 코틀린은 그 특성 처럼 read - only, mutable interface 모두 제공한다. Note that a mutable collection doesn't have to be assigned to a var. Write operations with a mutable collection are still possible even if it is assigned to a val. The benefit of assigning mutable collections to val is that you protect the reference to the mutable collection from mo..