코틀린 (Kotlin) with() apply() 함수 정리
with 함수
객체 이름을 반복하지 않고 사용하고 싶을 때 with 함수를 사용하면 편리합니다.
val stringBuilder = StringBuilder()
val text = with(stringBuilder) { //수신객체 지정
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능, this.append(letter) 와 동일
}
toString() //블럭마지막은 리턴값
}
val text = with(stringBuilder) { //수신객체 지정
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능, this.append(letter) 와 동일
}
toString() //블럭마지막은 리턴값
}
만약 with 블럭 안에서 함수 이름이 같은 바깥 함수를 호출하고 싶을 경우에는 this@OuterClass.함수() 처럼 호출하면 됩니다.
val dup = with(stringBuilder) {
//바깥 클래스와 이름이 중첩되었고
//바깥 클래스 함수를 호출하고 싶다면 this@outerclass.함수() 한다
this@RamdaActivity.toString()
}
//바깥 클래스와 이름이 중첩되었고
//바깥 클래스 함수를 호출하고 싶다면 this@outerclass.함수() 한다
this@RamdaActivity.toString()
}
apply 함수
apply 함수는 with 와 비슷하지만 자기 자신을 리턴합니다.객체를 생성하면서 속성을 초기화할 때 사용됩니다.
그리고 자바의 빌더 객체와 비슷한 기능을 따라할 수 있습니다.
//자신에게 전달된 수신객체를 리턴한다
val text = StringBuilder().apply {
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능
}
}.toString() //리턴된 StringBuilder의 toString() 을 호출
//StringBuilder 를 편리하게 사용 가능
//buildString 은 표준라이브러리로 StringBuilder와 toString() 을 호출해주는 함수
val text = buildString {
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능
}
}
val text = StringBuilder().apply {
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능
}
}.toString() //리턴된 StringBuilder의 toString() 을 호출
//StringBuilder 를 편리하게 사용 가능
//buildString 은 표준라이브러리로 StringBuilder와 toString() 을 호출해주는 함수
val text = buildString {
for(letter in 'A'..'Z') {
append(letter) //바로 사용가능
}
}
*개인적으로 코틀린을 공부하면서 정리한 자료입니다. 수정 사항 및 이슈가 있는 경우 메일 부탁드립니다.
댓글
댓글 쓰기