Menu
CoddyTech

ファイル操作

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

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

// 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")            // エラー: 文は関数内に記述する必要があります

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

一般的な構成では、クラスごとに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プレイグラウンド