고차 함수는 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말합니다. fun highFunction(a: Int, argFunction: (Int) -> Int) { val result = argFunction(10) println("a : $a, highFunction : $result") } highFunction(10, {x -> x * x}) (Int) -> Int 타입의 함수를 argFunction이라는 이름으로 사용할 수 있다는 것입니다. 위의 코드에서는 highFunction의 매개변수로 람다 함수를 사용한 예시입니다. 고차 함수와 함수 타입 매개변수 함수 타입의 매개변수 대입 일반적으로 함수를 호출할 때는 함수명 뒤에 ()를 붙이고 () 안에 인수를 작성합니다. 그런데 고차 함수의 매..
람다식(람다 함수)은 익명 함수(Anonymous Function)를 지칭하는 용어입니다. 함수형 프로그래밍이 아니더라도 람다식(람다함수)을 사용할 수 있지만 함수형 프로그래밍에서는 람다 함수가 고차함수의 매개변수(Parameter)나 반화값(Return Value)으로 사용됩니다. 고차 함수가 무엇인지는 조금 후에 알아보도록 하고 코틀린에서 람다식이 무엇인지 알아보기로 하겠습니다. 람다식 (람다 함수) fun 함수이름(매개변수) { 함수내용 } 코틀린에서 함수를 작성하는 방식은 위와 같습니다. 람다 함수는 fun이라는 키워드와 함수 이름을 생략하고 선언합니다. { 매개 변수 -> 함수 내용 } 람다 함수는 다음과 같은 규칙을 바탕으로 정의합니다. 1. 람다 함수는 항상 { }로 감싸서 표현해야 한다. ..
신기한 글이 있어서 공유하도록 한다. 출처 : https://brunch.co.kr/@kklloop/6 2017년, 박창선님께서 이른바 '넵'병을 세상에 소개해주셨다. 넵병은 '을'의 관계에 있는 사람들이 '갑'에게 대답할 때 자기도 모르게 '넵'을 타이핑하게 되는 슬픈 현상을 의미한다. 넵병은 아직 뚜렷한 치료법이 발견되지 않아 지금도 우리 주변에 창궐하고 있다. 우리 회사 슬랙에 '넵'을 검색해보았다. 16k results... 나는 2017년 당시에 대학원에서 석사과정을 밟고 있었다. 다들 아시다시피 대학원생은 교수라는 '슈퍼갑'을 상대해야 하는 '슈퍼을'이다. 그렇다 보니 내 몸에서도 자연스레 넵병이 발병하게 되었다. 어디서 옮아왔는지 모르겠다. 아직 치료 중이다. 자고로 병은 원인을 알아야 고칠..
함수형 프로그래밍에 대해 알아보도록 하겠습니다. 프로그래밍 패러다임으로서의 함수형 프로그래밍 절차지향 프로그래밍 알고리즘과 로직 중심으로 문제 해결이 주목적 객체지향 프로그래밍 클래스 선언이 최우선, 데이터와 데이터를 처리할 메서드를 하나로 묶어 객체를 만들고, 객체를 조합해서 프로그래밍 작성, 객체를 만들기 위한 추상화, 캡슐화, 상속, 다형성 등의 개념을 제공 함수형 프로그래밍 함수 선언이 최우선, 데이터의 흐름이 아니라 함수의 선언과 선언된 함수의 유기적인 흐름이 주목적 함수형 프로그래밍의 주요 원칙 함수형 프로그래밍에는 여러 원칙들이 있는데 가장 큰 핵심은 크게 두 가지입니다. 일급 객체(First Class Citizen)로서의 함수 순수 함수(Pure Function)으로 정의되는 함수 일급 ..
클래스 중에 메소드 없이 필드로만 구성된 클래스가 있습니다. 자바를 포함한 객체 지향 프로그래밍에서 이러한 클래스를 Value Object Class라고 부릅니다. class Test { String name; int age; String address; } Kotlin에서는 이런 Value Object Class를 더 편하게 이용할 수 있도록 data class라는 것을 제공하고 있습니다. class 앞에 data라는 Keyword만 추가해주면 되는 것입니다. 아래 처럼 말이죠. data class Good(val name: String, val age: Int) 이러한 data 클래스를 사용하려면 다음과 같은 제약 조건을 맞춰야 사용할 수 있습니다. 1. 주 생성자를 선언해야 하고 주 생성자의 Par..
Retrofit2를 사용하여 Multipart Form-Data형태로 파일과 Body를 업로드하는 방법에 대해 정리해보고자 합니다. MultiPart에 대해서 잘 모르는 분들을 위해 간단하게 MultiPart에 대해 정리해보고자 합니다. Multipart/form-data File Upload Feature를 구현할 때, Client가 만약 Web Browser라면 Form을 통해서 사용자로부터 파일을 받고 올리게 됩니다. 이때 Web Browser가 보내는 HTTP 메시지에서 Content-Type 속성이 multipart/form-data로 지정되며, 정해진 형식에 따라 메시지를 인코딩하여 전송합니다. 이를 처리하기 위한 서버는 멀티파트 메시지에 대해서 각 파트별로 분리하여 개별 파일의 정보를 얻게 ..
이번 포스트에서는 비트연산에 대해 살펴보도록 하겠습니다. 프로그램에서 사용하는 n비트 정수는 내부적으로 n개의 비트로 구성된 이진수 형태로 저장이 됩니다. 예를 들어 32Bit int 자료형에서 42는 아래와 같습니다. 00000000000000000000000000101010 이진수를 10진수로 변경하는 방법은 각 자리 수에 2의 n-1제곱을 곱해주면 구할 수 있습니다. (중학교 때 배운 것으로 간주하고 넘어가겠습니다.) 부호가 있는 n비트 정수 변수에는 -2^(n-1) 부터 2^(n-1)-1까지의 정수를 저장할 수 있습니다. 부호가 있는 정수 표현에서 가장 왼쪽 비트는 부호를 나타내며 0은 양수를 나타내고 1은 음수를 나타냅니다. 나머지 n-1개의 비트는 정수의 크기를 표현하게 됩니다. 부호가 없는 ..
- Total
- Today
- Yesterday
- 스위프트
- 함수형프로그래밍
- databinding
- 애플워치
- 코틀린
- java
- Swift
- Reactive programming
- android
- 함수형
- 알고리즘
- 오토레이아웃
- ios
- 상속
- Apple Watch
- 안드로이드
- Rxjava
- C++
- retrofit
- CloudComputing
- watchos
- XCode
- Notissu
- Elliotable
- Auto Layout
- Kotlin
- 아이폰
- apple
- SwiftUI
- 컬렉션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |