고차 함수는 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말합니다. 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. 람다 함수는 항상 { }로 감싸서 표현해야 한다. ..
함수형 프로그래밍에 대해 알아보도록 하겠습니다. 프로그래밍 패러다임으로서의 함수형 프로그래밍 절차지향 프로그래밍 알고리즘과 로직 중심으로 문제 해결이 주목적 객체지향 프로그래밍 클래스 선언이 최우선, 데이터와 데이터를 처리할 메서드를 하나로 묶어 객체를 만들고, 객체를 조합해서 프로그래밍 작성, 객체를 만들기 위한 추상화, 캡슐화, 상속, 다형성 등의 개념을 제공 함수형 프로그래밍 함수 선언이 최우선, 데이터의 흐름이 아니라 함수의 선언과 선언된 함수의 유기적인 흐름이 주목적 함수형 프로그래밍의 주요 원칙 함수형 프로그래밍에는 여러 원칙들이 있는데 가장 큰 핵심은 크게 두 가지입니다. 일급 객체(First Class Citizen)로서의 함수 순수 함수(Pure Function)으로 정의되는 함수 일급 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YrL7z/btqxlxNvfbF/YQvflqDklxYHxCtGuK2T5K/img.png)
클래스 중에 메소드 없이 필드로만 구성된 클래스가 있습니다. 자바를 포함한 객체 지향 프로그래밍에서 이러한 클래스를 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..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MJk7V/btqxbes3KZz/viYgPxWhklvxEvYgT2x1ik/img.png)
추상 클래스와 추상 메소드 추상 함수 추상 메소드(Abstract Method)는 미완성 함수 혹은 실행 영역이 없는 함수를 의미합니다. 메소드는 선언부와 실행부 2가지가 존재하는데 추상 메소드는 실행부가 없는 형태를 띄고 있습니다. 추상 메소드(Abstract Method)를 포함하는 클래스는 반드시 추상 클래스(Abstract Class)가 됩니다. 1 2 3 4 5 6 abstract class AbstractTest1 { fun myFun1() { //.... } abstract fun myFun2() } cs abstract는 클래스 선언부에 존재하고 있습니다. 그리고 abstract라는 예약어(Keyword)는 클래스 내부에서만 사용할 수 있습니다. 또한 클래스 내부에 선언된 메소드에서만 사용..
2019-07-28 Kotlin 상속 (Kotlin Override) - 1 2019-07-28 Kotlin 상속 (Kotlin Override) - 2 이전 글에 이어서 진행합니다. 아직 학습을 못하신 분들은 위 링크를 따라 들어가서 학습을 하신 후 다시 오시기 바랍니다. 이번 포스트에서는 Kotlin 언어에서의 접근 제한자에 대해 알아보도록 하겠습니다. public class User { public constructor() {} public val name: String = "KIM" public fun myFun() { } } 코틀린에서 제공하는 Access Modifier에는 4가지가 있습니다. public, internal, protected, private 접근 제한자의 접근 제한 범위 최상..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/DMA7m/btqw8CNalzM/jBYngPqXmsdf2bGUUVTCIK/img.png)
2019-07-28 Kotlin 상속 (kotlin Override) -1 이전 글에 이어서 진행합니다. 아직 학습을 못하신 분들은 위 링크를 눌러 학습을 하고 오시기 바랍니다. 상위 클래스의 멤버 접근 오버라이드를 통해 재정의한 멤버가 있어도 때로는 상위 클래스에 정의한 멤버도 함께 이용해야 하는 경우가 있습니다. 이럴 때 super라는 Keyword(예약어)를 사용합니다. open class Super { open var x: Int = 0 open fun someFun() { println("Super... someFun()") } } class Sub : Super() { override var x: Int = 20 override fun someFun() { super.someFun() prin..
이번 포스트에서는 Kotlin에서 상속을 구현하는 방법에 대해 정리해보려고 합니다. 상속은 Java에서도 마찬가지로 객체 지향에서 가장 중요한 개념 중 하나입니다. Kotlin에서의 상속은 Java에서의 상속과 거의 비슷하나, 생성자 관계, 상속에 의한 캐스팅 부분에서 약간의 차이를 보이고 있습니다. Kotlin에서의 상속 Any 클래스 상속 : 클래스를 선언할 때 다른 상위 클래스를 참조해 작성하는 개념 일반적으로 Kotlin에서 클래스를 선언하면 Any 클래스를 상속받게 됩니다. (우리가 굳이 작성하지 않아도 자동으로 Any 클래스를 상속받도록 되어 있습니다.) 왜냐하면 Kotlin의 모든 클래스는 Any 클래스의 서브 클래스이기 때문이죠. Any 클래스는 자바에서 Object 클래스와는 다릅니다. ..
- Total
- Today
- Yesterday
- ios
- java
- 알고리즘
- 애플워치
- 컬렉션
- watchos
- databinding
- 아이폰
- 코틀린
- Elliotable
- 스위프트
- Swift
- Rxjava
- C++
- apple
- 함수형
- Auto Layout
- Kotlin
- Reactive programming
- 상속
- Apple Watch
- CloudComputing
- SwiftUI
- android
- Notissu
- 함수형프로그래밍
- XCode
- 안드로이드
- retrofit
- 오토레이아웃
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |