Menu
CoddyTech

Работа с файлами

Часть раздела Объектно-ориентированное программирование путешествия по Kotlin на Coddy. Урок 1 из 57.

Реальные программы состоят из нескольких файлов. Все файлы .kt программы на Kotlin компилируются вместе, поэтому функцию или класс, объявленные в одном файле, можно использовать в любом другом файле того же пакета без импорта:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"

// Main.kt
fun main() {
    println(greeting("Ada"))
}

При запуске эта программа выводит Hello, Ada!: функция main в Main.kt вызывает функцию из Greeting.kt.

Файл Kotlin содержит только объявления: классы, функции, свойства. Инструкции, такие как println(...), должны находиться внутри функции. Программа начинается с fun main(), которая по соглашению находится в Main.kt:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // ошибка: инструкции должны находиться внутри функции

// Main.kt
fun main() {
    val name = readLine() ?: "friend"
    println(greeting(name))
}

Обычно в одном файле размещают один класс, а файл называют в честь класса: в Dog.kt находится Dog, в Account.kt — Account. В заданиях этого раздела ваш код нужно писать в этих файлах, а в Main.kt находится предоставленный код для ввода и вывода, который обычно нельзя редактировать. В редакторе каждый файл отображается на отдельной вкладке.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): считывает входные данные и выводит результаты

Видимость распространяется и на файлы. Объявление верхнего уровня с модификатором private видно только в своем файле, а значение по умолчанию — public — делает его видимым во всех файлах:

// Secret.kt
private const val SALT = "x7"        // доступна только в этом файле
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // всё в порядке: hashed публичная
    // println(SALT)                 // ошибка: SALT доступна только в Secret.kt
}
challenge icon

Задание

Легко

Программа состоит из двух файлов. main в Main.kt считывает имена и выводит результат greeting(name). Дополните greeting в Greeting.kt, чтобы она возвращала Hello, Ada! для имени Ada или Hello, friend!, если имя пустое.

Ваш код нужно написать в Greeting.kt. В Main.kt находится предоставленный код ввода/вывода, и его нельзя редактировать.

Попробуйте сами

fun main() {
    // Предоставленный код ввода-вывода: оставьте его без изменений
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Песочница Kotlin