열거 클래스는 다음과 같이 선언하여, 사용할 수 있다.

또한 기본으로 다음과 같은 멤버 및 멤버 함수를 가지고 있다.

 

val name:String

val ordinal:Int

fun valueOf(value:String): 열거 클래스

fun values():Array<열거 클래스>

 

여기서 name 은 열거 클래스에서 작성한 문자열 그대로 표기되며, 또한 ordinal은 첫번째 열거 부터 시작하여, 0 에서 시작하고 해당 열거 부분의 Index 값을 가지고 있다.

enum class Mode
{
	SELECTION, PEN, SHAPE, ERASER
}

fun main(args: Array<String>)
{
	// 현재 선택된 모드
	val mode: Mode = Mode.PEN

	when (mode)
	{
		Mode.SELECTION -> println("선택 모드")
		Mode.PEN -> println("펜 모드")
		Mode.SHAPE -> println("도형 모드")
		Mode.ERASER -> println("지우개 모드")
	}
}

열거 클래스에 프로퍼티와 멤버 함수 선언하는 방법

enum class Mode(val number: Int)
{
	SELECTION(0),
	PEN(1),
	SHAPE(2),
	ERASER(3);

	fun printNumber()
	{
		println("모드: $number")
	}
}

fun main(args: Array<String>)
{
	// 현재 선택된 모드
	val mode: Mode = Mode.ERASER

	println(mode.number)
	mode.printNumber()
}

참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다

배열 함수는 다음과 같이 정의 되어 있다.

class Array<T>

{

  val size:Int

  operator fun get(index:Int):T

  operator fun set(index:Int, value:T):Unit

  operator fun iterator():Iterator<T>

}

배열을 생성할 시, arrayOf 라는 함수를 사용하여, 생성하면 된다.

fun main(args: Array<String>)
{
	val integers: Array<Int> = arrayOf(10, 20, 30, 40)

	println(integers.size)
	println(integers[1])

	for (i in integers)
		print("$i ")
}

배열을 가변 인수로 활용하는 방법은 아래의 예제와 같이 vararg 로 선언하여, 사용하면 되며, 

또한 함수 인수를 전달 할 시에는 *를 사용하여, 전달하면 된다.

fun printAll(vararg tokens: String)
{
	for (token in tokens)
		print("$token ")
}

fun main(args: Array<String>)
{
	val numbers: Array<String> = arrayOf("What's", "your", "name?")
	printAll(*numbers)
}

 

참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다

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제 라는 책을 기반으로 공부 내용을 정리하였습니다

+ Recent posts