반응형
확장함수
- 기존 클래스에 함수를 추가할 수 있음.
fun Int.isEven() = this % 2 == 0
val a = 10
val b = 15
println(a.isEven()) // true
println(b.isEven()) // false
- 기본 자료형에 isEven을 추가하여 사용.
형변환
- 다른것은 JAVA와 크게 다르지 않으며, 클래스간의 형변환을 하려면 as 키워드를 사용한다.
open calss A // A클래스 생성
class B : A() // B클래스 생성과 동시에 A클래스 상속
val c = B() // c를 B클래스로 초기화
val d = c as A // d 에다가 c를 넣어주지만 A클래스로 형변환 하여 전달
형체크
- 형체크는 is로 한다. java의 instanceOf와 같다.
val str = "뚠님"
if(str is String){
println("문자열")
}
let()
- let은 블록에 자기자신을 인수로 전달하고 수행된 결과를 반환한다.
- 인수로 전달된 객체는 it으로 참조한다.
val result = str?.let { // str이라는 값이 null이 아닐경우 result 상수에 전달하는 함수
Integer.parseInt(it)
}
with()
- with()함수는 인수로 객체를 받고 리시버 객체에 전달한다.
- 수행된 결과를 반환하며, 리시버 객체로 전달된 객체는 this로 접근이 가능하다.
- this는 생략이 가능하다.
- 안전한 호출(?.)을 할 수 없다.
with(str){
println(toUpperCase())
}
apply()
- apply() 함수는 블록에 객체 자신이 리시버 객체로 전달되고, 그 객체가 반환된다.
- 객체 상태를 변화시키고, 그 객체를 다시 반환할때 사용
val result = book?.apply{
book.setColor(Color.RED)
book.setPrice(10000)
}
run()
- 익명함수처럼 사용할 수 있고, 객체에서 호출 하는 방법도 있음
- 블록의 결과를 반환함
- 블록안에 있는 변수는 임시 변수
- 계산에 임시변수가 많을때 사용하면 유용함
val avg = run {
val korean = 100
val english = 80
val math = 50
(korean + english + math)
}
str?.run{ // with와 비슷하지만 안전한 호출(?.)이 가능해서 with보다 더 유용하다
println(toUpperCase())
}
반응형
'Develop > Android' 카테고리의 다른 글
vectorDrawables.useSupportLisbrary (0) | 2019.06.17 |
---|---|
kotlin-android-extensions 와 Anko 라이브러리 (0) | 2019.06.17 |
Kotlin ) 코틀린 기초 Part#7 - 람다식, SAM (0) | 2019.06.13 |
Kotlin ) 코틀린 기초 Part#6 - 컬렉션 (0) | 2019.06.13 |
Kotlin ) 코틀린 기초 Part#5 - null? null! (0) | 2019.06.12 |