파일 다루기
Coddy Kotlin 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 1번째.
실제 프로그램은 여러 파일로 나뉩니다. 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(...)과 같은 문은 함수 안에 있어야 합니다. 프로그램은 관례상 Main.kt에 있는 fun main()에서 시작합니다:
// 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는 public임
// println(SALT) // 오류: SALT는 Secret.kt에서 private임
}챌린지
쉬움프로그램에는 두 개의 파일이 있습니다. Main.kt의 main은 이름을 읽고 greeting(name)의 결과를 출력합니다. 이름이 Ada일 때 Hello, Ada!을 반환하고, 이름이 비어 있을 때 Hello, friend!을 반환하도록 Greeting.kt의 greeting을 완성하세요.
코드는 Greeting.kt에 작성합니다. Main.kt에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.
직접 해보기
fun main() {
// 제공된 입출력 코드: 그대로 유지하세요
val input = generateSequence(::readLine).toList()
for (name in input) println(greeting(name))
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드