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")
초깃값을 지정할 수 있지만, 위와 같이 자동으로 순서 보장이 일어나지 않습니다.
그래서 아래와 같이 지정할 수 있습니다.
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를 통해서 값을 정할 수 있는데 변수의 순서도 변경하면서 값을 사용할 수도 있습니다.
그런 부분을 정리해보았습니다.
감사합니다.
Comments