文件操作
本课属于 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))
}通常的布局是每个文件放一个类,并以类名命名: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 是公开的
// println(SALT) // 错误:SALT 在 Secret.kt 中是私有的
}挑战
简单程序有两个文件。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))
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Kotlin 在线编辑器