Menu
Coddy logo textTech

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

Часть раздела Объектно-ориентированное программирование путешествия по 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