Object declaration в Kotlin
Object declaration записывается как
object, имя и блок в фигурных скобках.
Внутри допустимы свойства, функции и блок
init - как у обычного класса, но снаружи
существует ровно один такой объект:
object Logger {
fun log(message: String) {
println("[log] $message")
}
}
fun main() {
Logger.log("ready")
}
Имя после object одновременно имя типа и
имя единственного значения. Обращение
Logger.log(...) не создаёт новый объект
при каждом вызове - используется уже созданный
экземпляр.
На верхнем уровне файла можно объявить несколько
разных object - например, отдельный набор
функций для строк и отдельный для чисел:
object TextOps {
fun repeatLine(text: String, times: Int): String =
List(times) { text }.joinToString("\n")
}
object NumOps {
fun clamp(value: Int, min: Int, max: Int): Int =
value.coerceIn(min, max)
}
fun main() {
println(TextOps.repeatLine("go", 2))
println(NumOps.clamp(15, 0, 10))
}
Модификатор object удобен, когда нужен один именованный
набор операций без привязки к конкретному классу
данных. Если логика относится к одному типу
и его экземплярам, те же члены кладут
в companion object этого типа.
Сделайте object Printer с методом
line(text: String), который выводит
строку. Вызовите Printer.line("ok")
из main.
Сделайте object MathBox с функцией
square(n: Int): Int. Выведите
MathBox.square(7).