💡 / 키를 눌러 빠르게 검색하세요!

Kotlin Function - default, 변수 순서 변경

본문

코틀린 함수에 대해서 정리합니다.

  • default 지정 함수 및 변수 지정
  • 변수 순서 변경
  • Infix notation


default 지정 함수 및 변수 지정

default 지정을 통해 초깃값을 지정할 수 있습니다.

fun setUserInfo(name: String = "Name", email: String, phone: String = "000-0000-0000") {
	this.name = name
	this.email = email
	this.phone = phone
}

위와 같이 초깃값을 지정할 수 있습니다.

setUserInfo를 사용할 때 다음과 같이 지정하면 오류가 발생합니다.

setUserInfo("Email")

kotlin_error_01

초깃값을 지정할 수 있지만, 위와 같이 자동으로 순서 보장이 일어나지 않습니다.

그래서 아래와 같이 지정할 수 있습니다.

setUserInfo("Name") // Error
setUserInfo("Name", "email") // 정상
setUserInfo("Name", "email", "Phone") // 정상

위와 같습니다. 1 번째 줄은 사용이 불가능합니다.

그래서 다음과 같은 문법을 통해서 해결할 수 있습니다.

setUserInfo(email = "email")

이렇게 지정하면 email 변수에만 값을 지정하고, 나머지는 default 값으로 처리함을 나타냅니다.


변수 순서 변경

위와 같이 default로 값을 처리하고, email = "email" 형태로 값을 지정할 수 있습니다.

그래서 좀 더 유용한 방법도 있습니다.

변수가 추가되었을 때를 대비해서 다음과 같은 방법으로 코딩을 하게 되어 나중에 좀 더 편할 수 있습니다.

setUserInfo(
	phone = "000-0000-000",
	email = "[email protected]",
	name = "User Name")

위와 같은 형태로 변수를 호출할 수 있습니다.

변수 명을 앞에 주고, 값을 입력하는 방식을 사용할 수 있어, 변수 순서를 맘대로 지정할 수 있습니다.

setUserInfo(
	email = "[email protected]",
	name = "User Name")


Infix notation

이전 글에서 간단하게 Infix notation을 다루었습니다.

몇 가지 추가로 정리합니다.

Infix notation은 다음과 같이 사용합니다.

fun AppCompatActivity.replaceContentFragment(@IdRes frameId: Int, fragment: android.support.v4.app.Fragment) {
    supportFragmentManager.beginTransaction().replace(frameId, fragment)?.commit()
}

AppCompatActivity를 상속받거나, AppCompatActivity 변수를 통해서 replaceContentFragment을 사용하게 됩니다.

좀 더 쉬운 걸로 이야기하면

fun Int.sum(y: Int) = this + y

이 경우도 역시 Int를 상속받는 클래스이거나, Int 변수를 통해서 접근할 수 있습니다.

이를 Java에서 사용하게 되면, sum(1, 2)라고 사용하게 됩니다.

kotlin에서는 당연히 null을 허용하지 않으므로, java에서는 @NotNull이어야 합니다.


Infix notation에서 default 사용하기

위에서 정리했던 2가지를 모두 포함할 수 있습니다.

fun Int.sum(y: Int = 0, z: Int) = this + y + z

호출 시에는 다음과 같이 합니다.

15.sum(z = 15) // 15 + 0 + 15 = 30
15.sum(y = 5, z = 3) // 15 + 5 + 3 = 23


마무리

함수 사용에 대해서 추가로 정리해 보았습니다.

default를 통해서 값을 정할 수 있는데 변수의 순서도 변경하면서 값을 사용할 수도 있습니다.

그런 부분을 정리해보았습니다.

감사합니다.



About Taehwan

안드로이드 개발 12년차, 모바일앱 개발자 권태환입니다. 코드와 아키텍처, 그리고 개발 문화에 관심이 많습니다. GDG Korea Android와 DroidKnights에서 개발자 커뮤니티를 함께 만들어가고 있습니다.

Comments

테오 AI powered by Gemini 2.5 Flash
🤖
안녕하세요! 테오입니다. 😊
이 블로그의 모든 포스트를 학습했어요.
Android, Kotlin, 개발 관련 궁금한 점을 물어보세요!