Приватные расширения в Kotlin
Модификатор private перед fun или
val скрывает расширение за пределами
текущего файла. Внутри того же файла к нему
обращаются как к обычному расширению через точку:
private fun String.trimmed(): String {
return this.trim()
}
fun showGreeting(raw: String) {
println(trimmed(raw))
}
fun main() {
showGreeting(" hi ")
}
Приватное расширение удобно для коротких шагов,
которые нужны только вспомогательным функциям
этого файла. Публичная функция showGreeting
вызывает trimmed, а снаружи файла имя
trimmed недоступно:
private fun Int.half(): Int = this / 2
fun reportSize(count: Int) {
println(half(count))
}
fun main() {
reportSize(10)
}
Для свойства-расширения пишут private val
по тем же правилам. Так в файле остаются только
те операции, которые должны видеть другие части
программы.
Объявите private функцию doubled
для Int. Публичная функция printTwice
принимает число, выводит его удвоенное значение.
Вызовите printTwice(4) из main.
Определите, соберется ли вызов doubled(3)
из другого файла, если doubled объявлена
как private fun Int.doubled.