Praca z plikami
Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 1 z 57.
Rzeczywiste programy są podzielone na kilka plików. Wszystkie pliki .kt programu Kotlin są kompilowane razem, dlatego 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 wyświetla Hello, Ada!: funkcja main w pliku Main.kt wywołuje funkcję z pliku Greeting.kt.
Plik Kotlin zawiera tylko 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, a plik jest nazwany na cześć klasy: Dog.kt zawiera Dog, a Account.kt zawiera Account. W wyzwaniach w tej sekcji umieszczasz swój kod w tych plikach, 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ść dotyczy również plików. Deklaracja na najwyższym poziomie oznaczona jako private jest widoczna tylko we własnym pliku, podczas gdy domyślne public sprawia, że jest widoczna w każdym pliku:
// Secret.kt
private const val SALT = "x7" // tylko ten plik ma do tego 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 wypisuje wynik działania greeting(name). Uzupełnij funkcję 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. Plik 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