코틀린(Kotlin) 40

코틀린(kotlin) : Collections : List, Set, Map

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Collections : List, Set, Map 에 대해 공부합니다. 많은 프로그래밍 언어들과는 다르게, 코틀린에서는 mutable 과 immutable 컬렉션(List, Set, Map)을 구분합니다.컬렉션을 정확하게 edit 할 수 있으면 버그를 제거하고, 좋은 API를 설계하는데유용합니다. mutable collection의 read-only view와 immutable collection의 차이점을이해하는 것이 중요합니다.둘 다 쉽게 생성할 수 있지만, 이 둘의 차이에 대해 시스템에서는 알려주지 않기 때문에이것의 추적은(관..

코틀린(Kotlin) 2018.02.07

코틀린(kotlin) : Destructuring Declaration

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Destructuring Declarations 에 대해 공부합니다. Destructuring Declarations때때로 아래 예제처럼 객체를 여러 변수로 분리하는 것이 편리합니다.val (name, id) = member이러한 문법을 destructuring declaration 이라고 부릅니다.앞으로 DD 라고 표현하겠습니다.DD 는 여러 개의 변수를 한 번에 생성할 수 있습니다.그리고 사용할 때 각각 나눠서 사용할 수 있습니다.println(name)println(id)우리가 선언은 아래처럼 했지만val (name, id) =..

코틀린(Kotlin) 2018.02.06

코틀린(kotlin) : Inline Function 인라인 메서드

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Inline Function 에 대해 공부합니다. Inline Functions고차 함수를 사용하게 되면 런타임 시 특정 패널티가 부과됩니다.각 메서드는 객체이고, 메서드의 body 에서 엑세스 되는 변수인 closure를 캡처 합니다.메모리 할당과 가상 호출은 런타임 오버 헤드를 초래합니다. 하지만, 많은 경우에 이런 오버 헤드는 람다 식을 inlining 함으로써 제거될 수 있습니다.아래의 함수가 이러한 상황의 좋은 예입니다.lock(l) { foo() }매개 변수에 대한 함수 객체를 만들고 호출을 생성하는 대신 컴파일러에서 다음..

코틀린(Kotlin) 2018.02.06

코틀린(kotlin) : Lambda 고차함수와 람다, 익명 함수

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 람다에 대해서 공부합니다. Higher - Order Function : 고차함수고차 함수는 메서드의 파라미터로 또 다른 메서드가 있거나, 메서드를 리턴하는메서드를 말합니다. 좋은 예가 lock() 메서드 입니다.fun lock(lock: Lock, body: () -> T): T { lock.lock() try { return body() } finally { lock.unlock() } }위 코드를 보게되면 body 는 () -> T 라는 타입을 가집니다.그래서 이 body 는 파라미터를 가지지 않고 T 타입의 값을 반환하는 함수..

코틀린(Kotlin) 2018.02.06

코틀린(kotlin) : 메서드 Function

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 코틀린 메서드에 대해 공부합니다. FunctionsFunction Declarations : 메서드 선언코틀린에서는 메서드 선언 시 앞에 fun 키워드를 사용합니다.fun aaa() : String { return "it's AAA()" }Function Usage : 메서드 사용메서들를 호출할 때 전통적인 접근 :var a = aaa()멤버 메서드일 경우 dot notation을 사용해서 호출 fun main(args: Array) { var a = AAA().aaa() // 인스턴스의 생성과 동시에 사용 } class AAA { ..

코틀린(Kotlin) 2018.02.05

코틀린(kotlin) : 객체 표현식과 객체 선언 Object Expression and Declaration

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 객체의 표현식과 선언에 대해 공부합니다. 우리는 때때로 새로운 클래스를 명시적으로 선언하지 않고, 클래스를 약간 수정한객체를 만들어야 합니다.자바에서는 이런 경우 익명 구현 객체로 처리합니다.코틀린에서는 객체 표현식과 객체 선언으로 개념을 약간 일반화합니다. Object Expression어떠한 타입으로부터 상속받은 익명 클래스의 객체를 생성할 때 아래와 같이 선언합니다.window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) {..

코틀린(Kotlin) 2018.02.05

코틀린(kotlin) : Nested Class, inner class, Enum Class 중첩, 내부, Enum 클래스

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Nested Class, Inner Class, EnumClass 에 대해 공부합니다. Nested Class and Inner Class 중첩 클래스 클래스 내부에 또 다른 클래스를 중첩시킬 수 있습니다. fun main(args: Array) { val ccc = AAA.BBB().bbb() print(ccc) } class AAA { private val aaa: Int = 10 class BBB { fun bbb() = 100 } } 내부 클래스 클래스에 inner 마크를 선언하면 바깥 클래스의 멤버에 접근할 수 있게 됩니..

코틀린(Kotlin) 2018.02.05

코틀린(kotlin) : Data Class 와 Sealed Class

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Data Class 와 Sealed Class 에 대해 공부합니다. Data Classes 우리는 데이터를 유지시켜놓기 위한 클래스를 자주 만듭니다. 자바를 예로 들면 DAO 가 있겠죠? class UserDao { private String name; private String id; public UserDao (String name, String id) { this.name = name; this.id = id; } } 처럼요. 이러한 클래스에서 일부 표준 메서드들과 유틸리티 메서드들은 data에 의해서 약간 변경될 수 있습니..

코틀린(Kotlin) 2018.01.31

코틀린(kotlin) : 확장 Extension

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 이번 포스팅에서는 Extension 에 대해서 공부합니다. 코틀린은 클래스의 상속이나, Decorator 같은 디자인 패턴을 사용하지 않고,클래스에 새로운 메서드를 확장할 수 있도록 제공한다는 점에서C# 이나 Gosu 언어와 유사합니다. Extention functions클래스 또는 인터페이스에 메서드를 확장하는 방법은 간단합니다.fun 클래스이름.메소드이름(매개변수...) {// 코드....}MutableList 에 swap 이라는 메서드를 확장하는 예제입니다.fun main(args: Array) { val l = mutableListOf(1, 2..

코틀린(Kotlin) 2018.01.31