본문 바로가기
728x90

kotlin11

[kotlin] 확장함수 확장함수 기존 코드를 재작성하지 않고, 메서드를 추가할 수 있는 기능. 정적 메서드 호출에 대한 문법적 편의를 제공하는 기능. 사용 방법 아래와 같이 다양한 방법으로 사용할 수 있다. fun main() { val str: String = "otter66" println(str.lastChar()) } 1. fun String.lastChar(): Char = this.get(this.lastIndex) 2. fun String.lastChar(): Char = this[this.lastIndex] 3. fun String.lastChar(): Char = get(lastIndex) 1, 2번의 경우 수신객체에 this를 사용해 접근한 방법이다. 3번과 같이 수신객체를 this 없이 접근할 수도 있다. .. 2023. 5. 11.
[kotlin] 인터페이스와 추상클래스 인터페이스 interface: 경계면, 대화라는 뜻을 가진 단어. 일상생활 속에서 사람과 사람의 대화라는 인터페이스 → 역할과 역할의 메시지라는 인터페이스 역할에서 인터페이스를 통해 다른 역할에게 메시지를 보내어 다른 역할을 사용한다. 즉, 외부와의 상호작용을 정의한 것 요구사항 및 구현 변경시 기능을 외부의 변화를 최소화하기 위해 사용 예시. 변경이 잦을 것 같은 객체의 위에 인터페이스를 두어 인터페이스를 통해 소통하도록 한다. 특징 변수: 상태 불가능, 속성 가능 (⇒ 변수를 선언할 수는 있지만, 값을 할당할 수는 없음) (같은 이유로 생성자는 값을 가지는 상태이기 때문에 생성자를 가질 수 없음) 사용 가능 접근제어자: private, public 다중 상속 가능 인스턴스화 불가능 아래와 같이 Jav.. 2023. 4. 29.
Kotlin에서의 프로퍼티, Java에서의 필드와 프로퍼티 서론 자바에서는 클래스의 속성이나 상태를 나타낼 때 주로 필드와 프로퍼티라는 두 가지 용어를 사용합니다. 코틀린에서는 클래스의 속성과 상태를 나타낼 때 프로퍼티라는 용어만 사용합니다. 그렇다면 Java에서의 필드와 프로퍼티, Kotlin에서의 프로퍼티는 어떤 차이가 있는 걸까요? 우선 자바의 필드와 프로퍼티를 살펴 보겠습니다. Java의 field와 property field: 자신이 속한 클래스의 내부 변수. (속성 및 상태) property: 클래스의 내부 변수(필드)에 대해 접근자(getter/setter)를 사용해 접근하는 것. 필드와 접근자를 통틀어 가리키는 용어. 필드는 외부에서 직접 접근이 가능합니다. 그러나 클래스 밖에서 직접 접근은 권장되지 않습니다. 즉, 접근자를 사용하는 프로퍼티 사용.. 2023. 4. 10.
Kotlin 에서의 원시값 포장과 그에 적합한 클래스 선택하기 서론 원시값들을 모두 포장하다보니 클래스 외부에서 비교를 할 때 아래와 같이 코드가 길어지고 복잡해지는 경우가 많았다. 예제) 로또의 번호들이 중복되었는지 검사하는 코드 require(numbers.size == numbers.distinctBy { it.number }.size) { LOTTERY_NUMBERS_DUPLICATE_ERROR } 따라서, 외부에서 사용시 복잡해지지 않도록 equals를 override하였다. 두 객체를 비교할 때 객체의 주소가 아닌 객체의 내부 변수를 이용해 비교를 하도록 하였다. 하지만 이렇게 원시값을 포장할 때는 class 보다는 data class가 더 적절할 수 있다. 때에 따라서는 value class가 더 적절할 수도 있다. class, data class, v.. 2023. 4. 8.
intellij에서 ktlint를 사용해 Kotlin 컨벤션 준수하기 컨벤션과 ktlint 대화를 할 때 최소한의 단어만 있다면 어느정도 의사소통은 가능합니다. 하지만 맞춤법, 문법과 같은 것들이 추가되면 더 많은 양의 내용들을 문장에 담을 수 있습니다. 반대로 맞춤법, 문법과 같은 것들이 지켜지지 않는다면, 읽기 싫고 잘못 이해되기 쉬운 문장이 됩니다. 마찬가지로 코드를 통해 개발자의 의사를 명확하고 이해하기 쉽게 전달하고자 한다면 국어에서의 맞춤법 문법과 같은 컨벤션(규칙)을 지켜줘야 합니다. 아래의 kotlin 언어의 규칙, git commit 메시지의 규칙 등과 같은 것들이 있습니다. https://kotlinlang.org/docs/coding-conventions.html#control-flow-statements Coding conventions | Kotli.. 2023. 2. 7.
[kotlin] collection (List, Set, Map) kotlinlang.org/docs/reference/collections-overview.html Collections Overview - Kotlin Programming Language kotlinlang.org 우선, list, set, map세 녀석은 기본적으로는 오직 참조만할 수 있는, 즉 수정할 수 없는 immutable의 속성을 가지고 있습니다. 그러나 mutable하게 해줄 수 있습니다. list를 예로 들어보자면 val list = listOf("one", "two", "one") //immutable val list = mutableListOf("one", "two", "one") //mutable 간단하쥬? 자 이제 각각 살펴봅시다~ List List는 배열과 매우 비슷합니다. in.. 2021. 1. 14.
[kotlin] arrays 배열 kotlinlang.org/docs/reference/basic-types.html#arrays Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language kotlinlang.org 배열 생성 방법 var n = IntArrayOf(1,2,3) val n1 = IntArray(5) { 42 } //42로 초기화 var n2 = IntArray(5) { it * 1 } //[0] = 0*1, [1] = 1*1, [2] = 2*1, [3] = 3*1, [4] = 4*1 가장 많이 쓰이는 방법. 그 외에도 val n = arrayOf(1, 2, 3) 배열 참조 방법 println(n.get(0)) println(n[0]) 배열 수정 방법 n.set.. 2021. 1. 14.
[kotlin] Functions 함수 kotlinlang.org/docs/reference/basic-syntax.html#defining-functions Basic Syntax - Kotlin Programming Language kotlinlang.org && kotlinlang.org/docs/reference/functions.html Functions: infix, vararg, tailrec - Kotlin Programming Language kotlinlang.org 기본 형태 //int sum(int a, int b) { // return a+b; //} fun sum(a: Int, b: Int): Int { return a + b } 함수 내용이 적을 때 아래와 같이 한 줄로 축약할 수도 있다. fun sum(a: Int.. 2021. 1. 13.
[kotlin] loop (반복문) for, while, do while kotlinlang.org/docs/reference/control-flow.html#for-loops Control Flow: if, when, for, while - Kotlin Programming Language kotlinlang.org kotlin 공식 홈페이지의 글을 정리해두었습니다. 와! 반복문!! 우선 이 두녀석부터 볼게요! while & do while 이녀석은 우리가 알고있는 그 while, do while과 같습니다. //while fun main() { var x: Int = 5 while (x > 0) { println(x) x-- } } //do while fun main() { var y: Int = 5 do { println(y) y-- } while (y > 0) } 평소.. 2020. 12. 30.
728x90