본문 바로가기

코틀린10

[Kotlin] ROOM Database 사용 방법 Environment Setting plugins{ ... } apply plugin: 'kotlin-kapt' dependencies { def room_version = "2.2.5" ... // room implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor // optional - Kotlin Extensions and Coroutines support for Room implementation "androidx.room:room-ktx:$room_version" //.. 2022. 1. 10.
[Kotlin] Data Class 데이터를 다루는데 최적화된 클래스로 equals(), hashcode(), toString(), copy(), componentX() 함수가 자동으로 생성됨. 예제 fun main(){ val a = General("보잉",212) println(a == General("보잉", 212)) println(a.hashCode()) println(a) val b = Data("루다", 306) println(b == Data("루다", 306)) println(b.hashCode()) println(b) } class General(val name: String, val id: Int) data class Data(val name:String, val id: Int) 예제 결과 2022. 1. 6.
[Kotlin] 고차함수 고차함수 다른 함수를 인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 예제 fun main(){ b(::a) // 일반 함수를 고차 함수로 변환하는 연산자 -> ::일반 함수명 val c: (String)->Unit = { str -> println("$str 람다함수") } b(c) } fun a(str:String){ println("$str a함수") } fun b(function: (String)->Unit){ //Unit is Not return function("b가 호출한") } 결과 2022. 1. 5.
[Kotlin] 추상화 (abstract, interface) abstract 기존 추상화 개념과 같음. 예제1 fun main(){ var a = real_Man() a.run() a.sniff() } abstract class Man { abstract fun run() fun sniff(){ println("냄새를 맡는 중") } } class real_Man: Man(){ override fun run(){ println("달리는 중") } } 예제1 결과 interface abstract, open 등과 같은 키워드를 사용하지 않더라도 추론을 통해 자동 적용되며, 한 번에 여러 인터페이스를 상속 시킬 수 있음. 예제2 fun main(){ var a = Man() a.run() a.eat() } interface Runner { fun run() // eq.. 2022. 1. 5.
[Kotlin] Class 상속 및 오버라이딩 방법 클래스 상속 Kotlin은 Default로 상속이 금지되어 있기 때문에 class 예약어 앞에 open을 사용해야함. 예제1 fun main(){ var a = Person("김민수",1996) a.introduce() var b = Dog("김민수",1996) b.introduce() b.bark() } open class Person (var name:String, var birthYear:Int){ fun introduce(){ println("안녕하세요. 저는${this.name}이고, ${this.birthYear}년에 태어났습니다.") } } class Dog (name:String, birthYear:Int): Person(name, birthYear){ fun bark(){ println(.. 2022. 1. 5.
[Kotlin] 보조 생성자 인스터스 생성 시 보조 생성자(constructor)를 통해 생성자(init)를 실행시키기 이전에 필요한 동작을 수행할 수 있음. 예제 fun main(){ var a = Person("박보영",1990) var b = Person("장원영",2004) var c = Person("이루다") var d = Person("차은우") } class Person (var name:String, var birthYear:Int){ init{ println("${this.birthYear}, ${this.name}") } constructor(name:String): this(name, 1997){ println("보조 생성자를 통해 생성일자를 1997년으로 설정하였습니다.") } } 결과 2022. 1. 5.
[Kotlin] label를 통한 다중 for문 종료 예제 fun main() { loop@for (i in 1..10){ for (j in 1..10){ if(i==1 && j==3) break@loop println("i : $i, j : $j") } } } 예제 결과 2022. 1. 5.
[Kotlin] 조건문 when 사용법 예제1 : 조건에 따른 코드 수행 fun main() { doWhen(1) doWhen("Min") doWhen(123L) doWhen(1.5f) doWhen("aaa") } fun doWhen (a:Any){ when(a){ 1 -> println("정수 1입니다.") "Min" -> println("Min 입니다.") is Long -> println("Long 타입입니다.") !is String -> println("String 타입이 아닙니다.") else -> println("어떠한 조건도 만족하지 않습니다.") } } 예제1 결과 예제2 : 조건에 따른 결과 저장 fun main() { doWhen(1) doWhen("Min") doWhen(123L) doWhen(1.5f) doWhen("aa.. 2022. 1. 5.
[Kotlin] Online Compile Site https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online play.kotlinlang.org 아래와 같이 코드를 입력한 뒤, 실행 버튼(Ctrl+F9)을 누르면 결과가 나타남. 2022. 1. 5.