in 또는 out 변화를 가질 수 있는 타입 매개변수를 보고합니다.

inout 변화를 사용하면 Kotlin에서 더 정확한 타입 추론과 더 명확한 코드 의미를 얻을 수 있습니다.

예:


  class Box<T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) {
      consumeString(box)
      consumeCharSequence(box) // 컴파일 오류
  }

빠른 수정에서는 일치하는 변성 제어자를 추가합니다.


  class Box<out T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) ++{
      consumeString(box)
      consumeCharSequence(box) // 문제 없음
  }