작성
·
421
답변 2
2
2
안녕하세요 한솔님! 좋은 질문 감사드립니다! 👍
음... 제 생각에는 두 가지 방법이 있을 것 같습니다~~!
첫 번째는 a / b / c / d 순서 중에 a와 c만 가져오고 싶다면...
val (a, _, c, _) = foo
와 같이 사용하지 않을 변수를 _
처리하는 방법이에요!
물론 원하시는 것처럼 a와 c만 가져오는 방식은 아닙니다 ㅎㅎㅎ.. 느낌만 흉내내는거죠...!!
두 번째는 componentN을 직접 구현하는 방식입니다.
val (c, a) = foo
class Foo( // 자세히 보시면 data가 빠졌습니다!! data class에서 componentN을 오버라이드 할 수는 없습니다!
val a: String,
val b: Int,
val c: Long,
val d: String
) {
operator fun component1(): Long {
return c // component1로 c를 반환한다
}
operator fun component2(): String {
return a // component2로는 a를 반환한다
}
}
이렇게 되면 원하시는대로 c와 a만 정확히 가져올 수는 있지만... 반대로 (d, b)를 가져온다거나... (a, d)를 가져온다거나 이렇게 유연하게 조합을 구성할 수는 없습니다! 😭
이 두 방법 외에, 순수하게 구조분해의 원리 (componentN
) 를 이용해 (c, a)를 가져오기는 어려울 것 같습니다! 궁금증이 해소되셨으면 좋겠네요~ 감사합니다!! 🙏
스프링 배치 기술 사용하시나요?