with 함수Language/Kotlin2023. 12. 12. 17:18
Table of Contents
728x90
1. with 함수는 무엇인가?
코틀린에서 with 함수는 non-null 객체에 대해 여러 작업을 수행하고자 할 때 유용하게 사용되어 지고 있다.
이 함수는 주어진 객체를 람다 식의 수신자로 만든 뒤 람다 식의 결과를 반환시켜 준다.
2. 사용법
기본적인 틀은 이렇게 생겼다.
with(객체) {
// 객체에 대한 다양한 작업 수행
}
예를 들어보면, phone이라는 클래스가 존재하고, 이 클래스의 인스턴스에 대해 여러 작업을 수행하려고 한다고 가정을 해보자.
class Phone {
var name: String = ""
var price: Int = 0
}
val phone = phone()
이런 경우, with 함수를 사용해주게 되면 phone 객체에 대한 여러 작업을 수행할 수 있도록 해준다.
with(phone) {
name = "iphone15"
price = 999,000
}
이렇게 표현이 가능해진다.
phone.name = "iphone" 과 phone.price = 999,000 를 간단하게 표현한 것이다.
이와같이 with 함수는 코드의 가독성을 향상시켜주고, 중복을 줄여주는데 도움이 된다.
3. 마치며
쓰다보니 진짜 편해서... 자바에서는 사용이 불가능한건가 싶어서 검색을 해보았는데 굳이...? 라는 느낌이었다.
자바에는 코틀린의 `with` 함수와 동일한 기능을 하는 내장 함수가 없습니다. 코틀린의 `with` 함수는 코틀린의 표준 라이브러리에 포함되어 있으며, 이는 코틀린 언어의 특징 중 하나인 '스코프 함수'를 활용한 것입니다. 자바에서 비슷한 효과를 얻으려면, 객체의 메소드를 연속적으로 호출하거나, 객체를 메소드의 매개변수로 전달하는 등의 방법을 사용해야 합니다. 그러나 이런 방식은 코드가 길어지고 가독성이 떨어질 수 있습니다. 코틀린의 `with`와 같은 기능을 자바에서 사용하고 싶다면, '빌더 패턴'을 고려해볼 수 있습니다. 빌더 패턴은 복잡한 객체를 생성할 때 사용되는 디자인 패턴으로, 메소드 체이닝을 통해 객체의 필드를 설정하고 최종 객체를 생성하는 방식을 제공합니다. 이 패턴을 사용하면 코틀린의 `with` 함수와 유사한 효과를 얻을 수 있습니다.
사실 무슨 이야기인지 명확하게 이해가 가진 않지만 코틀린에서 with 함수가 사용이 가능한 이유는 표준 라이브러리에 포함이 되어 있고, 코틀린 자체의 특성을 이용한 케이스라 자바에서는 불가능하다? 라고 생각하면 될 것 같다. 뒤의 설명은 굳이...? 이렇게 까지 with 함수를 JAVA로 끌고와서 동일하게 쓰려고 하지마라? 같은 느낌이 든다.
728x90
'Language > Kotlin' 카테고리의 다른 글
binding을 쓰는 이유 (1) | 2023.12.05 |
---|---|
Kotlin에서 onClick은 왜 사용하지 않을까? (0) | 2023.12.04 |
@Marty_ :: 소리 지르고 싶다.
쓰임 있는 사람이 되기 위해 노력 중입니다.