inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin

Bài 19. Vài điều về Kotlin

구조 분해는 componentN으로 순서에 의존하는거같은데 이 의존을 없앨 수 없나요?

512

catsbi

16 câu hỏi đã được viết

1

구조분해가 순서에 의존하는 것 같은데,

이러한 순서에 대한 의존성을 제거할 수는 없는 것인가요?

 

data class Foo(
    var a:String,
    var b:Int,
    var c:Long,
    var d:String
)

fun main(){
    val foo = Foo("hello", 33, 44L, "Bye")

    //기존 방식
    val (a, b, c, d) = foo

    //원하는 방식
    val (c, a) = foo
}

java kotlin 객체지향

Câu trả lời 2

2

catsbi

답변 감사합니다! 이번에 배치 프로젝트의 언어를 코틀린으로 바꾸려고하는데 많은 도움이 되었습니다!

0

siyoon4730

스프링 배치 기술 사용하시나요?

2

lannstark

안녕하세요 한솔님! 좋은 질문 감사드립니다! 👍

 

음... 제 생각에는 두 가지 방법이 있을 것 같습니다~~!

 

첫 번째는 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)를 가져오기는 어려울 것 같습니다! 궁금증이 해소되셨으면 좋겠네요~ 감사합니다!! 🙏

수업노트

0

52

1

싱글톤과 스프링

0

70

2

get() = 3

0

49

2

강사님

0

74

1

강의 복습하면서 생긴 질문

1

93

1

Kotlin과 Java의 현업에서의 활용

0

121

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

71

1

코틀린에서 상속 시, 주의점에 대한 질문

1

95

3

내용 이해 질문

0

56

1

자바와 코틀린의 함수형 프로그래밍,

1

91

1

플랫폼 타입 설명 문의

2

73

2

널 아님 단언 관련 질문

0

83

1

강의 중 질문

0

79

2

범위 비교 질문

1

91

2

타입캐스팅 궁금한점 질문드립니다.

1

239

2

코틀린 val 질문

0

166

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

408

2

확장함수 스타일 질문

0

138

2

확장 프로퍼티 질문

1

156

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

283

1

java class의 NotNull 어노테이션 인식

1

260

1

[16강] 확장함수 관련 질문입니다!

1

130

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

138

1

안녕하세요 scope function 에 receiver 가 없는 경우

1

168

1