in/out 키워드는 타입 매개변수의 업 및 다운 캐스팅을 할 수 있도록 지원되는 키워드이다.
out : AAA<서브 타입>을 AAA<Super 타입>에 대입할 수 있도록 지원.
in : AAA<Super 타입>을 AAA<서브 타입>에 대입할 수 있도록 지원.
* : AAA<*> 은 타입 인수가 무엇이든 상관없이 대입 할 수 있도록 지원.
class AAA<out T>
class BBB<in T>
fun main(args: Array<String>)
{
val aaaSub = AAA<Int>()
val aaaSuper: AAA<Any> = aaaSub
val bbbSuper = BBB<Any>()
val bbbSub: BBB<Int> = bbbSuper
val star: AAA<*> = aaaSub
}
.. 연산자는 범위를 표현하는 연산자 이다.
.. 연산자는 operator fun rangeTo 라는 함수로 치환된다.
만약 클래스를 정의 하고 하고 싶을 경우, operator fun rangeTo 라는 함수를 오버라이딩하면 된다.
fun main(args: Array<String>)
{
val oneToTen: IntRange = 1..10
println(5 in oneToTen)
val upperAtoZ: CharRange = 'A'..'Z'
if ('C' in upperAtoZ)
println("대문자입니다.")
if ('p' in 'a'..'z')
println("소문자입니다.")
}
참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다
'Kotlin' 카테고리의 다른 글
[Kotlin]Enum class (0) | 2020.09.06 |
---|---|
[Kotlin] Reified 타입 매개 변수 (0) | 2020.09.06 |
[Kotlin] 함수 리터럴과 람다식, 익명함수, it 식별자 (0) | 2020.09.06 |
[Kotlin] Sealed Class (0) | 2020.09.01 |
[Kotlin] 확장함수 / 확장 프로퍼티 (0) | 2020.09.01 |