본문 바로가기

프로그래밍/Kotlin15

Kotlin - 고차 함수(High-order function), 함수 타입(function type), 람다(lambda), 익명함수(anonymous function) 코틀린 함수는 일급(first-class) 함수 입니다. 이것이 의미하는 것은 코틀린에서 함수가 변수와 자료구조에 저장될 수 있고, 함수의 매개변수로 보내질 수 있고, 다른 고차 함수로부터 반환되어질 수 있다는 것입니다. 코틀린의 함수는 일급 함수이므로 함수가 아닌 값에 대해 수행할 수 있는 모든 연산을 함수에 대해서도 수행할 수 있습니다. 1. 고차 함수(Higher-order functions) 고차 함수는 함수를 함수의 매개변수로 받을 수 있고, 함수를 반환할 수 있는 함수입니다. 2. 함수 타입(Function types) 코틀린은 함수 타입을 가집니다. 이것은 정수 타입, 실수 타입과 같은 타입을 말합니다. 함수 타입은 (Int) -> String 과 같이 쓰여질 수 있습니다. 이것은 정수를 매.. 2021. 8. 15.
Eclipse와 Android Studio 에서 Kotlin 버전 확인 방법 Kotlin을 배워보고 있는데, 갑자기 내가 쓰고 있는 Kotlin의 버전이 어떻게 되지 하는 생각이 들었습니다. 보통 언어의 버전에 민감한 편인데, 코틀린에 대해서는 왠지 아무 생각이 없었네요. https://kotlinlang.org 에서 확인한, 이 글을 쓰는 현재 안정된 최신 버전은 1.5.21 입니다. Eclipse와 Android Studio에서는 플러그인을 통해서 코틀린을 사용합니다. 쓸일이 있을까 싶긴 하지만, 명령행 컴파일러도 제공되고 있습니다(https://kotlinlang.org/docs/command-line.html). ※ Eclipse 에서 코틀린 플러그인 사용시 버전확인 방법 - 사용중인 Eclipse 버전은 2021-06입니다. 코틀린 플러그인 버전은 0.8.21 입니다. .. 2021. 8. 1.
Kotlin - 함수(function) ※ 함수의 정의 함수는 fun 키워드로 시작합니다. ※ main 함수 - main 함수는 프로그램의 시작점입니다. 프로그램을 실행하면 메모리로 로드된 프로그램에서 main 함수를 찾아서 실행합니다. - 매개변수 args는 문자열 배열로 명령행에서 실행 프로그램명 뒤에 따라오는 인자들을 받아들입니다. fun main(args : Array) { /* ... */ } // 명령행 인자를 받지 않는 형태도 가능합니다. fun main() { /* ... */ } - 매개변수는 함수내로 값을 보내기 위해 사용됩니다. 여러개의 매개 변수가 콤마(,)로 분리되어 사용될 수 있습니다. 매개 변수가 없을 수도 있습니다. - 함수가 값을 반환하면 반환 타입을 지정해 줘야 합니다. - 값의 반환은 return 문 뒤에 값.. 2021. 7. 26.
Kotlin - 변수, 상수, Non-null, Nullable ※ 값을 저장할 수 있는 변수와 상수를 만드는 방법입니다. - 값을 변경할 수 있는 변수 var title: String = "offbyone" - 값을 변경하지 못하는 상수 val count: Int = 20 ※ 변수와 상수에 초기값을 주지 않고 사용하려고 하면 컴파일시 에러가 발생합니다. ※ 변수가 null값을 가질 수 있는지 지정합니다. null은 아무것도 없다는 뜻입니다. - Non-null 은 Null값을 가질 수 없는 타입입니다. 기본적으로 Null을 가질 수 없습니다. - Nullable은 null값을 가질 수 있는 타입입니다. 타입 뒤에 물음표(?)를 붙입니다. String title: String? = null ※ 한 변수의 값을 다른 변수에 할당합니다. var count: Int var.. 2021. 7. 24.
전자정부표준프레임워크 3.10에 Kotlin 플러그인 설치오류 및 OpenJDK 16 설치하기 전자정부표준프레임워크 10 버전을 설치하고, Kotlin 플러그인을 설치하려고 하니까 다음과 같은 오류가 발생합니다. Cannot complete the install because some dependencies are not satisfiable Software being installed: a.jre.javase 1.6.0 Software being installed: Wild Web Developer 0.10.6.202102181620 (org.eclipse.wildwebdeveloper.feature.feature.group 0.10.6.202102181620) Cannot satisfy dependency: From: Wild Web Developer: web development in Ecl.. 2021. 7. 24.
Kotlin - 클래스와 상속 코틀린에서 클래스를 만드는 방법에 대해 알아봅니다. 코틀린도 객체지향언어 이군요. 뭐, 요즘은 자바스크립트도 PHP도 모두 객체를 사용할 수 있도록 변해 왔으니까 특이할 것도 없겠죠. 클래스(class)는 객체가 어떤 데이터를 가지고, 어떻게 동작할지를 나타내는 코드 정보라고 할 수 있겠습니다. 실제 프로그램이 실행되어 정의된 클래스에 따라 컴퓨터의 메모리상에 객체가 만들어지면 이것을 인스턴스(instance)라고 합니다. 1. 클래스(Classes) 코틀린에서 클래스는 class 키워드를 사용해서 정의합니다. class Invoice { ... } class Box(t: T) { ... } 클래스의 선언은 클래스 이름, 클래스 헤더(클래스의 타입 파라미터의 정의, 기본 생성자 등), 중괄호로 둘러싸인 .. 2019. 8. 15.
Kotlin - 반환 및 제어 흐름 건너뛰기 - return, continue, break 이번에 볼 것은 함수 또는 람다 표현식에서 반환문(return)을 사용하는 방법과 루프의 반복을 건너뛰거나(continue) 바로 빠져 나오는(break) 방법입니다. - return : 기본적인 사용법은 return문장을 둘러싼 가장 가까운 함수 또는 익명 함수에서 반환합니다. 반환값이 있을수도 없을수도 있습니다. 기본적인 사용법에서라고 말한것은 코틀린에서는 라벨 반환을 할 수 있습니다.- break : 가장 가까운 둘러싼 루프를 종료합니다.- continue : 가장 가까운 둘러싼 루프의 다음 반복을 진행합니다. ※ 참고 : 둘러싼 가장 가까운 루프, 함수, 익명함수 라고 하는 것은 함수 또는 루프가 중첩될 경우 그중에 가장 가까운 것을 의미합니다. 이 return, continue, break는 다.. 2019. 7. 29.
Kotlin - 흐름제어(Control Flow): if, when, for, while 코틀린에서 프로그램의 흐름을 제어하는 방법을 알아봅니다. 흐름제어에는 if, when, for, while이 사용되어 집니다. 다른 언어와 유사합니다. 1. if 표현식(If Expression) 코틀린에서 if는 표현식 입니다. 즉, if가 반환값을 가집니다. 그러므로 코틀린에는 삼항 연산자(조건 ? 참일때 : 거짓일때)가 없습니다. 왜냐하면 보통 if가 삼항연산자의 역할을 잘 수행하기 때문입니다. // 전통적인 사용법var max = aif (a b) { max = a} else { max = b} // 표현식으로의 사용법val max = if (a > b) a else b if 표현식의 브랜치는 여러문장을 가지는.. 2019. 7. 13.
Kotlin - 패키지와 임포트(packages and imports) 패키지는 클래스들을 분류해서 모아둔것을 말한다고 생각하면 되겠습니다. 또한 패키지는 동일한 클래스 이름을 사용하는 클래스가 있을때 이름 충돌을 피하는데도 사용될 수 있습니다. 패키지는 인터넷 도메인 처럼 마침표(.)로 구분되는 문자열로 정의됩니다. 코틀린과 자바를 같이 사용하는 프로젝트라면 Kotlin 소스 파일은 Java 소스 파일과 동일한 소스 루트에 있어야하며 동일한 디렉토리 구조를 따라야합니다(자바에서는 패키지명의 마침표 부분으로 구분되는 디렉토리 구조에 파일이 저장됩니다). 순수 Kotlin 프로젝트에서 권장되는 디렉토리 구조는 공통 루트 패키지가 생략된 패키지 구조를 따르는 것입니다 (예 : 프로젝트의 모든 코드가 "org.example.kotlin" 패키지 및 하위 패키지에 있는 경우 "or.. 2019. 7. 5.
Kotlin - 기본 타입(Basic Types) Kotlin은 모든것이 객체입니다. 그러므로 모든 변수(variable)에 대해 멤버 함수와 속성을 호출할 수 있습니다. 몇몇 타입은 특별한 내부 표현을 가집니다. 예를 들어 숫자(numbers), 문자(characters), 불리언(booleans) 타입은 실행시간에는 원시값 처럼 표현되어집니다. 그러나 사용자에게는 보통의 클래스로 보입니다. 이 글에서는 Kotlin에서 사용되는 기본 타입인 숫자, 문자, 불리언, 배열, 문자열에 대해서 알아봅니다. 1. 숫자(Numbers) 코틀린은 숫자를 자바와 유사하게 다룹니다. 하지만 똑같지는 않습니다. 예를 들어 코틀린의 숫자 타입은 암묵적인 넓은 범위로의 변환이 없습니다. 그리고 어떤 경우에는 리터럴이 약간 다릅니다. ※ 참고 : 자바에서 서로 다른 타입의 .. 2019. 7. 1.
Kotlin - 코딩 관습(Coding Conventions) Kotlin을 Java, C, C++, PHP, C#등의 언어만 봐온 상태에서 배워보려니까 상당히 생소한 문법 형태가 많이 나오는것 같습니다. 코틀린 문법에 대해서 전혀 모르는 상태에서 이 코딩 컨벤션 문서를 보면서 문법을 모르면 이해하기 힘든 것들이 많이 있었습니다. 하지만 그냥 무시하고, 문서를 봤습니다. 다른 방법이 없어서 그랬다는게 맞겠죠.^^ 앞으로 문법을 배워 나가면서 이 문서를 다시보고 수정하던가 해야 겠습니다. 코딩 관습(Coding Conventions)은 띄어쓰기 이름작성시 대소문자등 문법오류와 관계 없으나 많은 사람들이 따르는 일반적인 코드작성규칙을 말합니다. 이런 규칙을 따르는 것이 다른 사람의 코드를 분석하거나 자신이 작성한 코드이더라도 가독성을 높이는 방법이 됩니다. 이 페이지에.. 2019. 6. 9.
Kotlin - 관용구(Idioms) 프래그래밍에서 관용구(idioms)는 자주 사용하는 코딩 형태나 패턴이 되겠습니다. 보통 같은 결과를 내는 프로그램을 다른 모양으로 작성할 수 있는데, 관용구는 주로 사용되는 형태를 말합니다. 여기에는 Kotlin에서 자주 사용되어지는 관용구(idioms)를 무작위로 모아둔 내용 입니다. 1. DTO(Data Transfer Object)s 객체 만들기 data class Customer(val name: String, val email: String) 이 간단하게 선언한 Customer 클래스는 다음 기능들을 제공합니다. 코틀린의 Data class에 대해서는 다음에 자세히 알아보겠습니다. - 모든 속성에 대한 getters (var로 선언 되었을 경우 setters 도 제공) 제공합니다. - equa.. 2019. 5. 6.
Kotlin - Basic Syntax(기본 구문) (2/2) Kotlin - Basic Syntax(기본 구문) (1/2) 에서 이어집니다. 기본 구문(Syntax)에 대한 글은 말 그대로 구문(Syntax)에 대해 설명합니다. 프로그램에서 구문(Syntax)는 문법(Grammar)에 의해 정의된 프로그램의 형태, 구조 등을 말합니다. 그러므로 설명 코드내의 자세한 연산자, 예약어, 예외 등에 대한 설명은 없습니다. 이러한 자세한 내용은 나중에 알아보게 되겠습니다. 9. null이 가능한 값의 사용과 null 체크하기 null 값이 가능한 참조(reference)는 null사용 가능하다는 표시를 반드시 해야 합니다(반환 타입 뒤에 ? 를 붙입니다). 다음 함수는 문자열 str이 정수가 아닐경우 null을 반환합니다. fun parseInt(str: String):.. 2019. 4. 30.
Kotlin - Basic Syntax(기본 구문) (1/2) 이 글에서는 Kotlin(코틀린) 언어의 기본 구문에 대해서 알아봅니다. 다음글을 번역한 내용 입니다. https://kotlinlang.org/docs/reference/basic-syntax.html 1. 문장 끝의 세미콜론 Kotlin은 문장 끝에 세미콜론을 붙이지 않아도 됩니다(붙여도 됩니다). 2. 패키지 정의는 소스파일의 제일 위에 적습니다. package my.demo import java.util.* // ... 소스 파일의 위치는 패키지명의 구조와 같을 필요는 없습니다(같아도 됩니다). 컴파일된 class파일은 패키지와 같은 디렉토리 구조 내에 생성 됩니다. 3. 함수의 정의하기 다음 함수는 두 개의 Int 파라미터를 가지고, Int 타입을 반환하는 함수 입니다. fun sum(a: In.. 2019. 4. 25.
Eclipse에 Kotlin(코틀린) 플러그인 설치 및 간단한 프로그램 실행해보기 요즘 Kotlin(코틀린)이라는 언어가 인기가 있다고 하네요. 한번 배워보기로 했습니다. Kotlin은 IntelliJ IDE를 개발한 JetBrains에서 2011년에 공개한 프로그래밍 언어라고 합니다. 특이한 점이 JVM 기반의 언어이고, Java와 100% 상호운영이 된다고 하네요. 2017년 구글이 안드로이드의 공식언어로 Kotlin을 추가하여서 더욱 인기가 높아진것 같습니다. 일단 JVM이 있어야 하므로 JDK가 설치되어 있어야 하고, Eclipse도 설치되어 있어야 합니다. 각각 "윈도우에 JDK 8 설치하기"와 "Eclipse 설치하기"를 참고 하세요. 1. Eclipse Kotlin plugin 을 설치합니다. Eclipse를 실행하고, Help -> Eclispe Marketplace.... 2019. 3. 28.