하루에 0.01%라도 성장하자

Develop/Android

Kotlin ) 코틀린 기초 Part#8 - 확장함수, 형변환, 그외 함수

뚠님 2019. 6. 14. 13:51
반응형

Kotlin

 

확장함수

 

  • 기존 클래스에 함수를 추가할 수 있음.

 

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())
}
반응형