Menu
Coddy logo textTech

ファイル操作

CoddyのKotlinジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 1/57。

実際のプログラムは、複数のファイルに分割されています。Kotlin プログラムのすべての .kt ファイルはまとめてコンパイルされるため、あるファイルで宣言された関数やクラスは、import なしで同じパッケージの他のファイルから使用できます。

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

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

このプログラムを実行すると Hello, Ada! と出力されます。Main.kt の main が Greeting.kt にある関数を呼び出しているためです。

Kotlin ファイルには宣言のみを記述します。クラス、関数、プロパティなどです。println(...)のような文は関数内に記述する必要があります。プログラムはfun main()から開始します。慣例として、これはMain.ktに記述されます。

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // error: 文は関数の中になければなりません

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

通常の構成では、1つのファイルにつき1つのクラスを配置し、クラスにちなんだ名前を付けます。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 は public
    // println(SALT)                 // エラー: SALT は Secret.kt で private です
}
challenge icon

チャレンジ

簡単

このプログラムには2つのファイルがあります。Main.ktのmainは名前を読み取り、greeting(name)の結果を出力します。Greeting.ktのgreetingを完成させ、名前がAdaの場合はHello, Ada!を返し、名前が空の場合はHello, friend!を返すようにしてください。

コードはGreeting.ktに記述します。Main.ktには提供された入力/出力コードが含まれており、編集できません。

自分で試してみよう

fun main() {
    // 提供された入出力コード: そのままにしておく
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド