Praca z plikami
Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 1 z 57.
Prawdziwe programy są podzielone na kilka plików. Wszystkie pliki .kt programu Kotlin są kompilowane razem, więc funkcji lub klasy zadeklarowanej w jednym pliku można użyć w dowolnym innym pliku tego samego pakietu bez importu:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// Main.kt
fun main() {
println(greeting("Ada"))
}Uruchomienie tego programu wypisuje Hello, Ada!: funkcja main w pliku Main.kt wywołuje funkcję znajdującą się w pliku Greeting.kt.
Plik Kotlin zawiera wyłącznie deklaracje: klasy, funkcje, właściwości. Instrukcje takie jak println(...) muszą znajdować się wewnątrz funkcji. Program rozpoczyna się od fun main(), która zgodnie z konwencją znajduje się w pliku Main.kt:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi") // błąd: instrukcje muszą znajdować się wewnątrz funkcji
// Main.kt
fun main() {
val name = readLine() ?: "friend"
println(greeting(name))
}Typowy układ to jedna klasa na plik, nazwany tak jak klasa: Dog.kt zawiera Dog, a Account.kt zawiera Account. W wyzwaniach z tej sekcji Twój kod trafia do tych plików, a Main.kt zawiera dostarczony kod wejścia/wyjścia, którego zazwyczaj nie możesz edytować. Edytor wyświetla każdy plik jako kartę.
Dog.kt // class Dog(...) { ... }
Account.kt // class Account { ... }
Main.kt // fun main(): odczytuje dane wejściowe i wypisuje wynikiWidoczność obejmuje również pliki. Deklaracja na najwyższym poziomie oznaczona jako private jest widoczna tylko w swoim pliku, natomiast domyślne public sprawia, że jest widoczna w każdym pliku:
// Secret.kt
private const val SALT = "x7" // tylko ten plik ma do niego dostęp
fun hashed(s: String) = s + SALT
// Main.kt
fun main() {
println(hashed("pw")) // w porządku: hashed jest publiczna
// println(SALT) // błąd: SALT jest prywatna w Secret.kt
}Wyzwanie
ŁatwyProgram składa się z dwóch plików. main w pliku Main.kt odczytuje imiona i wyświetla wynik działania greeting(name). Uzupełnij greeting w pliku Greeting.kt, tak aby zwracała Hello, Ada! dla imienia Ada lub Hello, friend!, gdy imię jest puste.
Twój kod umieść w pliku Greeting.kt. Main.kt zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
fun main() {
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
val input = generateSequence(::readLine).toList()
for (name in input) println(greeting(name))
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasKonstruktory główneBloki init i walidacjaKonstruktory dodatkowePodsumowanie — karta biblioteczna4Dziedziczenie
Klasy otwarte i podklasyNadpisywanie składowychsuper i konstruktoryKlasy abstrakcyjnePodsumowanie – katalog pracowników7Klasy specjalne
Klasy danychKlasy wyliczenioweHierarchie zapieczętowaneequals, hashCode, toStringPodsumowanie — śledzenie zamówień10Wzorce projektowe, część 2
Delegowanie za pomocą byWzorzec dekoratoraWzorzec budowniczegoWzorzec stanu2Właściwości i hermetyzacja
Własne akcesoryModyfikatory widocznościPrywatne setterylazy i lateinitPowtórka – konto bankowe5Interfejsy
Deklarowanie interfejsówMetody domyślneWiele interfejsówInterfejsy jako typyPowtórzenie – metody płatności8Typy generyczne
Funkcje generyczneKlasy generyczneOgraniczenia typówKowariancja i kontrawariancja: in i outPodsumowanie — kolejka priorytetowa11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książekPoćwicz samodzielnie: Edytor online Kotlin