다음은 Kotlin in Action 책 내용이다.
호출 시 인자 중 어느 하나라도 이름을 명시하고 나면 혼동을 막기 위해 그 뒤에 오는 모든 인자는 이름을 꼭 명시해야 한다.
그런데 이를 직접 실험해보니, 컴파일 에러가 나지 않았다. 그래서 왜 해야 한다
고 말했는지 궁금했다.
알아본 결과, 명시된 인수 이후의 인수에 이름을 명시하지 않으면 원래 컴파일 에러가 났었다고 한다.
In Kotlin 1.3, when you called a function with named arguments, you had to place all the arguments without names (positional arguments) before the first named argument. For example, you could call f(1, y = 2), but you couldn't call f(x = 1, 2).
하지만 위 글 이후에 적혀있듯 2020년 8월 17일 Kotlin 1.4.0가 출시되며 순서 관계없이 원하는 인수에만 이름을 명시할 수 있다고 한다.
In Kotlin 1.4, there is no such limitation – you can now specify a name for an argument in the middle of a set of positional arguments. Moreover, you can mix positional and named arguments any way you like, as long as they remain in the correct order.
fun reformat(
str: String,
uppercaseFirstLetter: Boolean = true,
wordSeparator: Char = ' '
) {
// ...
}
//Function call with a named argument in the middle
reformat("This is a String!", uppercaseFirstLetter = false , '-')
책의 1부 코틀린 소개 직전, 들어가며에는 다음과 같이 쓰여있다.
이 책은 코틀린 1.0과 1.1(이 책이 나온 2016년 기준으로는 개발 중이었음. 2022년 2월 초 최신 버전은 1.6.10)에 초점을 맞춘다. 1.1과 그 이전 버전의 차이가 있는 부분은 본문에서 따로 언급하지만, 개발 중인 내용은 일부 다루지 못한 부분이 있다. 새로운 기능이나 변경 사항에 대해서는 https://kotlinlang.org 에 있는 온라인 문서를 참고하라.
즉, 1.4.0에서 추가된 해당 기능이 책 내용에 반영되지 않은 것 같다.
책 표지에는 Kotlin 1.6 대응이라고 쓰여 있었는데, 왜 반영이 안 되어있는지는 잘 모르겠다.